Regras Java

Informar um problema Ver código

Regras

java_binário

Ver origem da regra
java_binary(name, deps, srcs, data, resources, args, classpath_resources, compatible_with, create_executable, deploy_env, deploy_manifest_lines, deprecation, distribs, env, exec_compatible_with, exec_properties, features, javacopts, jvm_flags, launcher, licenses, main_class, output_licenses, plugins, resource_jars, resource_strip_prefix, restricted_to, runtime_deps, stamp, tags, target_compatible_with, testonly, toolchains, use_launcher, use_testrunner, visibility)

Cria um arquivo Java ("jar file"), além de um script de shell de wrapper com o mesmo nome da regra. O script de shell do wrapper usa um caminho de classe que inclui, entre outras coisas, um arquivo jar para cada biblioteca da qual o binário depende.

O script de wrapper aceita várias sinalizações exclusivas. Consulte //src/main/java/com/google/devtools/build/lib/bazel/rules/java/java_stub_template.txt para ver uma lista de sinalizações configuráveis e variáveis de ambiente aceitas pelo wrapper.

Destinos de saída implícita

  • name.jar: um arquivo Java, que contém os arquivos de classe e outros recursos correspondentes às dependências diretas do binário.
  • name-src.jar: um arquivo que contém as origens ("jar de origem").
  • name_deploy.jar: um arquivo Java adequado para implantação (só criado se explicitamente solicitado).

    A criação do destino <name>_deploy.jar para sua regra cria um arquivo jar autônomo com um manifesto que permite que ele seja executado com o comando java -jar ou com a opção --singlejar do script de wrapper. O uso do script de wrapper é preferível a java -jar porque ele também transmite as sinalizações JVM e as opções para carregar bibliotecas nativas.

    O jar de implantação contém todas as classes que seriam encontradas por um classloader que pesquisou o caminho de classe do script de wrapper do binário do início ao fim. Ele também contém as bibliotecas nativas necessárias para dependências. Eles são carregados automaticamente na JVM no tempo de execução.

    Se seu destino especificar um atributo de tela de início, em vez de ser um arquivo JAR normal, o _deploy.jar será um binário nativo. Ele conterá a tela de início mais as dependências nativas (C++) da regra, todas vinculadas a um binário estático. Os bytes reais do arquivo jar serão anexados a esse binário nativo, criando um único blob binário contendo o código executável e o código Java. É possível executar o arquivo jar resultante diretamente da mesma forma que você executaria qualquer binário nativo.

  • name_deploy-src.jar: um arquivo contendo as origens coletadas do fechamento transitivo do destino. Elas corresponderão às classes no deploy.jar, exceto quando os jars não tiverem jars de origem correspondentes.

Um atributo deps não é permitido em uma regra java_binary sem srcs. Essa regra requer um main_class fornecido por runtime_deps.

O snippet de código a seguir ilustra um erro comum:

java_binary(
    name = "DontDoThis",
    srcs = [
        ...,
        "GeneratedJavaFile.java",  # a generated .java file
    ],
    deps = [":generating_rule",],  # rule that generates that file
)

Faça o seguinte:

java_binary(
    name = "DoThisInstead",
    srcs = [
        ...,
        ":generating_rule",
    ],
)

Argumentos

Atributos
name

Name; required

Um nome exclusivo para este destino.


É recomendável usar o nome do arquivo de origem que é o ponto de entrada principal do aplicativo, exceto a extensão. Por exemplo, se o ponto de entrada for chamado de Main.java, o nome poderá ser Main.
deps

List of labels; optional

A lista de outras bibliotecas a serem vinculadas ao destino. Veja comentários gerais sobre deps em Atributos típicos definidos pela maioria das regras de compilação.
srcs

List of labels; optional

A lista de arquivos de origem que são processados para criar o destino. Esse atributo é quase sempre obrigatório. Veja as exceções abaixo.

Os arquivos de origem do tipo .java são compilados. No caso de arquivos .java gerados, geralmente é aconselhável colocar o nome da regra de geração aqui, em vez do nome do próprio arquivo. Isso não apenas melhora a legibilidade, mas torna a regra mais resiliente a alterações futuras: se a regra de geração gerar arquivos diferentes no futuro, você só precisará corrigir um lugar: o outs da regra de geração. Não liste a regra de geração em deps porque ela é um ambiente autônomo.

Os arquivos de origem do tipo .srcjar são descompactados e compilados. Isso será útil se você precisar gerar um conjunto de arquivos .java com uma regra geral.

Regras: se a regra (normalmente genrule ou filegroup) gerar algum dos arquivos listados acima, eles serão usados da mesma forma descrita para arquivos de origem.

Esse argumento é quase sempre obrigatório, exceto se um atributo main_class especificar uma classe no caminho de classe do tempo de execução ou se você especificar o argumento runtime_deps.

resources

List of labels; optional

Uma lista de arquivos de dados a serem incluídos em um jar Java.

Se os recursos forem especificados, eles serão agrupados no jar junto com os arquivos .class comuns produzidos pela compilação. O local dos recursos dentro do arquivo jar é determinado pela estrutura do projeto. O Bazel primeiro procura o layout padrão de diretório do Maven, que é um diretório "src" seguido por um "net" neto. Se ele não for encontrado, o Bazel procurará o diretório mais alto chamado "java" ou "javatests". Por exemplo, se um recurso estiver em <workspace root>/x/java/y/java/z, o caminho dele será y/java/z. Essa heurística não pode ser modificada. No entanto, o atributo resource_strip_prefix pode ser usado para especificar um diretório alternativo específico para arquivos de recursos.

Os recursos podem ser arquivos de origem ou gerados.

classpath_resources

List of labels; optional

NÃO USE ESTA OPÇÃO, EXCETO SE NÃO HOUVER OUTRO TIPO

Uma lista de recursos que precisam estar localizados na raiz da árvore java. A única finalidade desse atributo é oferecer compatibilidade com bibliotecas de terceiros que exigem que os recursos sejam encontrados no caminho de classe exatamente como "myconfig.xml". Só é permitida em binários, não em bibliotecas, devido ao risco de conflitos de namespace.

create_executable

Boolean; optional; nonconfigurable; default is True

Se o binário é executável. Os binários não executáveis coletam dependências Java transitivas de tempo de execução em um jar de implantação, mas não podem ser executados diretamente. Nenhum script de wrapper será criado se esse atributo for definido. É um erro defini-lo como 0 se os atributos launcher ou main_class forem definidos.
deploy_env

List of labels; optional

Uma lista de outros destinos de java_binary que representam o ambiente de implantação para esse binário. Defina esse atributo ao criar um plug-in que será carregado por outro java_binary.
Definir esse atributo exclui todas as dependências do caminho de classe do ambiente de execução (e do jar de implantação) desse binário que são compartilhadas entre esse binário e os destinos especificados em deploy_env.
deploy_manifest_lines

List of strings; optional

Uma lista de linhas a serem adicionadas ao arquivo META-INF/manifest.mf gerado para o destino *_deploy.jar. O conteúdo desse atributo não está sujeito à substituição "Tornar variável".
javacopts

List of strings; optional

Opções extras do compilador para esta biblioteca. Sujeito à substituição da "variável variável" e à tokenização do shell do Bourne.

Essas opções do compilador são passadas para javac após as opções do compilador global.

jvm_flags

List of strings; optional

Uma lista de sinalizadores a serem incorporados no script de wrapper gerado para executar este binário. Sujeito à substituição de $(location) e "Tornar variável" e a tokenização do shell do Bourne.

O script de wrapper de um binário Java inclui uma definição de CLASSPATH (para encontrar todos os jars dependentes) e invoca o interpretador Java correto. A linha de comando gerada pelo script de wrapper inclui o nome da classe principal seguida de "$@", para que você possa transmitir outros argumentos depois do nome da classe. No entanto, os argumentos destinados à análise pela JVM precisam ser especificados antes do nome de classe na linha de comando. O conteúdo de jvm_flags é adicionado ao script do wrapper antes que o nome da classe seja listado.

Esse atributo não tem efeito nas saídas *_deploy.jar.

launcher

Label; optional

Especifique um binário que será usado para executar seu programa Java em vez do programa bin/java normal incluído no JDK. O destino precisa ser um cc_binary. Qualquer cc_binary que implemente a API Java Invocation pode ser especificado como um valor para esse atributo.

Por padrão, o Bazel usa o iniciador normal do JDK (bin/java ou java.exe).

A sinalização do Bazel --java_launcher relacionada afeta somente os destinos java_binary e java_test que não especificaram um atributo launcher.

As dependências nativas (C++, SWIG, JNI) serão criadas de maneira diferente, dependendo se você estiver usando a tela de início do JDK ou outra:

  • Se você estiver usando a tela de início normal do JDK (padrão), as dependências nativas serão criadas como uma biblioteca compartilhada chamada {name}_nativedeps.so, em que {name} é o atributo name dessa regra java_binary. O código não utilizado não é removido pelo vinculador nesta configuração.
  • Se você estiver usando qualquer outra tela de início, as dependências nativas (C++) serão vinculadas estaticamente a um binário chamado {name}_nativedeps, em que {name} é o atributo name dessa regra java_binary. Nesse caso, o vinculador removerá todos os códigos que considerar não usados do binário resultante, o que significa que qualquer código C++ acessado apenas por meio de JNI pode não ser vinculado, a menos que esse destino cc_library especifique alwayslink = 1.

Ao usar qualquer tela de início diferente da tela de início padrão do JDK, o formato da saída *_deploy.jar muda. Consulte os documentos java_binary principais para mais detalhes.

main_class

String; optional

Nome da classe com o método main() a ser usado como ponto de entrada. Se uma regra usar essa opção, ela não precisará de uma lista de srcs=[...]. Assim, com esse atributo, é possível tornar um executável de uma biblioteca Java que já contém um ou mais métodos main().

O valor desse atributo é um nome de classe, não um arquivo de origem. A classe precisa estar disponível no tempo de execução: ela pode ser compilada por esta regra (de srcs) ou fornecida por dependências diretas ou transitivas (por runtime_deps ou deps). Se a classe não estiver disponível, o binário falhará no tempo de execução. Não há verificação de tempo de compilação.

plugins

List of labels; optional

Plug-ins do compilador Java para execução em tempo de compilação. Cada java_plugin especificado nesse atributo será executado sempre que essa regra for criada. Uma biblioteca também pode herdar plug-ins de dependências que usam exported_plugins. Os recursos gerados pelo plug-in serão incluídos no jar resultante dessa regra.
resource_jars

List of labels; optional

Obsoleto: use java_import e deps ou runtime_deps.
resource_strip_prefix

String; optional

O prefixo do caminho que será removido dos recursos Java.

Se especificado, esse prefixo de caminho é retirado de todos os arquivos no atributo resources. É um erro um arquivo de recurso não estar nesse diretório. Se não for especificado (o padrão), o caminho do arquivo de recurso será determinado de acordo com a mesma lógica do pacote Java dos arquivos de origem. Por exemplo, um arquivo de origem em stuff/java/foo/bar/a.txt estará localizado em foo/bar/a.txt.

runtime_deps

List of labels; optional

Bibliotecas a serem disponibilizadas para o binário final ou para teste apenas no tempo de execução. Assim como deps comum, elas aparecerão no caminho de classe do tempo de execução, mas ao contrário delas, não no caminho de classe do tempo de compilação. As dependências necessárias apenas no momento da execução devem ser listadas aqui. As ferramentas de análise de dependência precisam ignorar os destinos que aparecem em runtime_deps e deps.
stamp

Integer; optional; default is -1

Se deve codificar informações de criação no binário. Valores possíveis:
  • stamp = 1: sempre carimba as informações do build no binário, mesmo em builds --nostamp (link em inglês). Essa configuração precisa ser evitada, já que ela pode eliminar o armazenamento em cache remoto do binário e qualquer ação downstream que dependa dele.
  • stamp = 0: sempre substitua as informações de build por valores constantes. Isso proporciona um bom armazenamento de resultados em cache.
  • stamp = -1: a incorporação de informações do build é controlada pela sinalização --[no]stamp.

Os binários carimbados não são recriados, a menos que as dependências mudem.

use_launcher

Boolean; optional; default is True

Se o binário deve usar um iniciador personalizado.

Se for definido como falso, o atributo launcher e a sinalização --java_launcher relacionada serão ignorados para esse destino.

use_testrunner

Boolean; optional; default is False

Use a classe do executor de testes (por padrão, com.google.testing.junit.runner.BazelTestRunner) como o ponto de entrada principal de um programa Java e forneça a classe do executor como um valor da propriedade do sistema bazel.test_suite. Use-o para modificar o comportamento padrão, que é usar o executor de testes para regras java_test e não para regras java_binary. É improvável que você faça isso. Um dos usos é para regras AllTest invocadas por outra regra, por exemplo, para configurar um banco de dados antes de executar os testes. A regra AllTest precisa ser declarada como java_binary, mas ainda deve usar o executor de teste como o ponto de entrada principal. O nome de uma classe de execução de teste pode ser modificado com o atributo main_class.

java_importação

Ver origem da regra
java_import(name, deps, data, compatible_with, constraints, deprecation, distribs, exec_compatible_with, exec_properties, exports, features, jars, licenses, neverlink, proguard_specs, restricted_to, runtime_deps, srcjar, tags, target_compatible_with, testonly, visibility)

Essa regra permite o uso de arquivos .jar pré-compilados como bibliotecas para as regras java_library e java_binary.

Exemplos

    java_import(
        name = "maven_model",
        jars = [
            "maven_model/maven-aether-provider-3.2.3.jar",
            "maven_model/maven-model-3.2.3.jar",
            "maven_model/maven-model-builder-3.2.3.jar",
        ],
    )

Argumentos

Atributos
name

Name; required

Um nome exclusivo para este destino.

deps

List of labels; optional

A lista de outras bibliotecas a serem vinculadas ao destino. Consulte java_library.deps.
constraints

List of strings; optional; nonconfigurable

Restrições extras impostas a essa regra como uma biblioteca Java.
exports

List of labels; optional

Segmentações a serem disponibilizadas para os usuários desta regra. Consulte java_library.exports.
jars

List of labels; required

A lista de arquivos JAR fornecidos para os destinos Java que dependem desse destino.

Boolean; optional; default is False

Use esta biblioteca apenas para compilação, não em tempo de execução. Útil se a biblioteca for fornecida pelo ambiente de execução durante a execução. Exemplos de bibliotecas como essa são as APIs do ambiente de desenvolvimento integrado para plug-ins de ambiente de desenvolvimento integrado ou tools.jar para tudo que for executado em um JDK padrão.
proguard_specs

List of labels; optional

Arquivos a serem usados como especificação do Proguard. Eles descreverão o conjunto de especificações a serem usadas pelo Proguard. Se especificado, eles serão adicionados a qualquer destino android_binary, dependendo desta biblioteca. Os arquivos incluídos aqui precisam ter apenas regras idempotentes, ou seja, -dontnote, -dontwarn, pressnosideeffects e regras que comecem com -keep. Outras opções só podem aparecer no proguard_specs de android_binary, para garantir mesclagens não tautológicas.
runtime_deps

List of labels; optional

Bibliotecas a serem disponibilizadas para o binário final ou para teste apenas no tempo de execução. Consulte java_library.runtime_deps.
srcjar

Label; optional

Um arquivo JAR que contém o código-fonte dos arquivos JAR compilados.

biblioteca_java

Ver origem da regra
java_library(name, deps, srcs, data, resources, compatible_with, deprecation, distribs, exec_compatible_with, exec_properties, exported_plugins, exports, features, javacopts, licenses, neverlink, plugins, proguard_specs, resource_jars, resource_strip_prefix, restricted_to, runtime_deps, tags, target_compatible_with, testonly, visibility)

Essa regra compila e vincula as origens em um arquivo .jar.

Destinos de saída implícita

  • libname.jar: um arquivo Java que contém os arquivos da classe.
  • libname-src.jar: um arquivo que contém as origens ("jar de origem").

Argumentos

Atributos
name

Name; required

Um nome exclusivo para este destino.

deps

List of labels; optional

A lista de bibliotecas a serem vinculadas a esta biblioteca. Veja comentários gerais sobre deps em Atributos típicos definidos pela maioria das regras de compilação.

Os jars criados pelas regras java_library listadas em deps estarão no caminho de classe do tempo de compilação dessa regra. Além disso, o fechamento transitivo de deps, runtime_deps e exports estará no caminho de classe do tempo de execução.

Por outro lado, os destinos no atributo data estão incluídos nos arquivos de execução, mas não no caminho de classe do tempo de compilação nem do tempo de execução.

srcs

List of labels; optional

A lista de arquivos de origem que são processados para criar o destino. Esse atributo é quase sempre obrigatório. Veja as exceções abaixo.

Os arquivos de origem do tipo .java são compilados. No caso de arquivos .java gerados, geralmente é aconselhável colocar o nome da regra de geração aqui, em vez do nome do próprio arquivo. Isso não apenas melhora a legibilidade, mas torna a regra mais resiliente a alterações futuras: se a regra de geração gerar arquivos diferentes no futuro, você só precisará corrigir um lugar: o outs da regra de geração. Não liste a regra de geração em deps porque ela é um ambiente autônomo.

Os arquivos de origem do tipo .srcjar são descompactados e compilados. Isso será útil se você precisar gerar um conjunto de arquivos .java com uma regra geral.

Regras: se a regra (normalmente genrule ou filegroup) gerar algum dos arquivos listados acima, eles serão usados da mesma forma descrita para arquivos de origem.

Esse argumento é quase sempre obrigatório, exceto se um atributo main_class especificar uma classe no caminho de classe do tempo de execução ou se você especificar o argumento runtime_deps.

data

List of labels; optional

A lista de arquivos necessários para essa biblioteca no momento da execução. Veja comentários gerais sobre data em Atributos típicos definidos pela maioria das regras de compilação.

Ao criar um java_library, o Bazel não coloca esses arquivos em nenhum lugar. Se os arquivos data forem gerados, o Bazel os gerará. Ao criar um teste que depende deste java_library, o Bazel copia ou vincula os arquivos data à área de arquivos de execução.

resources

List of labels; optional

Uma lista de arquivos de dados a serem incluídos em um jar Java.

Se os recursos forem especificados, eles serão agrupados no jar junto com os arquivos .class comuns produzidos pela compilação. O local dos recursos dentro do arquivo jar é determinado pela estrutura do projeto. O Bazel primeiro procura o layout padrão de diretório do Maven, que é um diretório "src" seguido por um "net" neto. Se ele não for encontrado, o Bazel procurará o diretório mais alto chamado "java" ou "javatests". Por exemplo, se um recurso estiver em <workspace root>/x/java/y/java/z, o caminho dele será y/java/z. Essa heurística não pode ser modificada. No entanto, o atributo resource_strip_prefix pode ser usado para especificar um diretório alternativo específico para arquivos de recursos.

Os recursos podem ser arquivos de origem ou gerados.

exported_plugins

List of labels; optional

A lista de java_plugins (por exemplo, processadores de anotações) a serem exportados para bibliotecas que dependem diretamente dessa biblioteca.

A lista especificada de java_plugins será aplicada a qualquer biblioteca que dependa diretamente dessa biblioteca, como se essa biblioteca tivesse declarado explicitamente esses rótulos em plugins.

exports

List of labels; optional

Bibliotecas exportadas.

As regras de listagem aqui as tornarão disponíveis para as regras mãe, como se as mães dependessem explicitamente dessas regras. Isso não é verdade para deps normal (não exportado).

Resumo: uma regra X pode acessar o código em Y se existir um caminho de dependência entre elas que comece com uma borda deps seguida por zero ou mais arestas exports. Veja alguns exemplos para ilustrar isso.

Suponha que A dependa de B e B dependa de C. Nesse caso, C é uma dependência transitiva de A. Portanto, alterar as origens de C e recriar a A recriará corretamente tudo. No entanto, A não poderá usar classes em C. Para permitir isso, A precisa declarar C em deps ou B pode tornar mais fácil para A (e qualquer coisa que possa depender de A) declarando C no atributo exports de (B).

O fechamento de bibliotecas exportadas está disponível para todas as regras mães diretas. Veja um exemplo um pouco diferente: A depende de B, B depende de C e D e também exporta C, mas não D. Agora, A tem acesso a C, mas não a D. Agora, se C e D exportassem algumas bibliotecas, C' e D', respectivamente, A só poderia acessar C', mas não D'.

Importante: uma regra exportada não é uma dependência regular. No exemplo anterior, se B exportar C e quiser usar C, ela precisará listá-la no próprio deps.

javacopts

List of strings; optional

Opções extras do compilador para esta biblioteca. Sujeito à substituição da "variável variável" e à tokenização do shell do Bourne.

Essas opções do compilador são passadas para javac após as opções do compilador global.

Boolean; optional; default is False

Indica se esta biblioteca só deve ser usada para compilação e não durante a execução. Útil se a biblioteca for fornecida pelo ambiente de execução durante a execução. Exemplos dessas bibliotecas são as APIs do ambiente de desenvolvimento integrado para plug-ins de ambiente de desenvolvimento integrado ou tools.jar para tudo que é executado em um JDK padrão.

Observe que neverlink = 1 não impede que o compilador incorpore material dessa biblioteca em destinos de compilação que dependam dela, conforme permitido pela Especificação de linguagem Java (por exemplo, static final de String ou de tipos primitivos). Portanto, o caso de uso recomendado é quando a biblioteca de tempo de execução é idêntica à biblioteca de compilação.

Se a biblioteca do ambiente de execução for diferente da biblioteca de compilação, você precisará garantir que ela seja diferente apenas dos locais em que o JLS proíbe os compiladores de ficar em linha (e isso precisa ser aplicado a todas as versões futuras do JLS).

plugins

List of labels; optional

Plug-ins do compilador Java para execução em tempo de compilação. Cada java_plugin especificado nesse atributo será executado sempre que essa regra for criada. Uma biblioteca também pode herdar plug-ins de dependências que usam exported_plugins. Os recursos gerados pelo plug-in serão incluídos no jar resultante dessa regra.
proguard_specs

List of labels; optional

Arquivos a serem usados como especificação do Proguard. Eles descreverão o conjunto de especificações a serem usadas pelo Proguard. Se especificado, eles serão adicionados a qualquer destino android_binary, dependendo desta biblioteca. Os arquivos incluídos aqui precisam ter apenas regras idempotentes, ou seja, -dontnote, -dontwarn, pressnosideeffects e regras que comecem com -keep. Outras opções só podem aparecer no proguard_specs de android_binary, para garantir mesclagens não tautológicas.
resource_jars

List of labels; optional

Obsoleto: use java_import e deps ou runtime_deps.
resource_strip_prefix

String; optional

O prefixo do caminho que será removido dos recursos Java.

Se especificado, esse prefixo de caminho é retirado de todos os arquivos no atributo resources. É um erro um arquivo de recurso não estar nesse diretório. Se não for especificado (o padrão), o caminho do arquivo de recurso será determinado de acordo com a mesma lógica do pacote Java dos arquivos de origem. Por exemplo, um arquivo de origem em stuff/java/foo/bar/a.txt estará localizado em foo/bar/a.txt.

runtime_deps

List of labels; optional

Bibliotecas a serem disponibilizadas para o binário final ou para teste apenas no tempo de execução. Assim como deps comum, elas aparecerão no caminho de classe do tempo de execução, mas ao contrário delas, não no caminho de classe do tempo de compilação. As dependências necessárias apenas no momento da execução devem ser listadas aqui. As ferramentas de análise de dependência precisam ignorar os destinos que aparecem em runtime_deps e deps.

java_lite_proto_library

Ver origem da regra
java_lite_proto_library(name, deps, data, compatible_with, deprecation, distribs, exec_compatible_with, exec_properties, features, licenses, restricted_to, tags, target_compatible_with, testonly, visibility)

java_lite_proto_library gera código Java a partir de arquivos .proto.

deps precisa apontar para regras proto_library .

Exemplo:

java_library(
    name = "lib",
    deps = [":foo"],
)

java_lite_proto_library(
    name = "foo",
    deps = [":bar"],
)

proto_library(
    name = "bar",
)

Argumentos

Atributos
name

Name; required

Um nome exclusivo para este destino.

deps

List of labels; optional

A lista de regras proto_library para as quais gerar código Java.

java_proto_library

Ver origem da regra
java_proto_library(name, deps, data, compatible_with, deprecation, distribs, exec_compatible_with, exec_properties, features, licenses, restricted_to, tags, target_compatible_with, testonly, visibility)

java_proto_library gera código Java a partir de arquivos .proto.

deps precisa apontar para regras proto_library .

Exemplo:

java_library(
    name = "lib",
    deps = [":foo_java_proto"],
)

java_proto_library(
    name = "foo_java_proto",
    deps = [":foo_proto"],
)

proto_library(
    name = "foo_proto",
)

Argumentos

Atributos
name

Name; required

Um nome exclusivo para este destino.

deps

List of labels; optional

A lista de regras proto_library para as quais gerar código Java.

teste_java

Ver origem da regra
java_test(name, deps, srcs, data, resources, args, classpath_resources, compatible_with, create_executable, deploy_manifest_lines, deprecation, distribs, env, env_inherit, exec_compatible_with, exec_properties, features, flaky, javacopts, jvm_flags, launcher, licenses, local, main_class, plugins, resource_jars, resource_strip_prefix, restricted_to, runtime_deps, shard_count, size, stamp, tags, target_compatible_with, test_class, testonly, timeout, toolchains, use_launcher, use_testrunner, visibility)

Uma regra java_test() compila um teste Java. Um teste é um wrapper binário em torno do código de teste. O método principal do executor de testes é invocado em vez da classe principal que está sendo compilada.

Destinos de saída implícita

  • name.jar: um arquivo Java.
  • name_deploy.jar: um arquivo Java adequado para implantação. (Somente criado se explicitamente solicitado.) Para mais detalhes, veja a descrição da saída name_deploy.jar de java_binary.

Consulte a seção sobre argumentos java_binary(). Essa regra também é compatível com todos os atributos comuns a todas as regras de teste (*_test).

Exemplos

java_library(
    name = "tests",
    srcs = glob(["*.java"]),
    deps = [
        "//java/com/foo/base:testResources",
        "//java/com/foo/testing/util",
    ],
)

java_test(
    name = "AllTests",
    size = "small",
    runtime_deps = [
        ":tests",
        "//util/mysql",
    ],
)

Argumentos

Atributos
name

Name; required

Um nome exclusivo para este destino.

deps

List of labels; optional

A lista de outras bibliotecas a serem vinculadas ao destino. Veja comentários gerais sobre deps em Atributos típicos definidos pela maioria das regras de compilação.
srcs

List of labels; optional

A lista de arquivos de origem que são processados para criar o destino. Esse atributo é quase sempre obrigatório. Veja as exceções abaixo.

Os arquivos de origem do tipo .java são compilados. No caso de arquivos .java gerados, geralmente é aconselhável colocar o nome da regra de geração aqui, em vez do nome do próprio arquivo. Isso não apenas melhora a legibilidade, mas torna a regra mais resiliente a alterações futuras: se a regra de geração gerar arquivos diferentes no futuro, você só precisará corrigir um lugar: o outs da regra de geração. Não liste a regra de geração em deps porque ela é um ambiente autônomo.

Os arquivos de origem do tipo .srcjar são descompactados e compilados. Isso será útil se você precisar gerar um conjunto de arquivos .java com uma regra geral.

Regras: se a regra (normalmente genrule ou filegroup) gerar algum dos arquivos listados acima, eles serão usados da mesma forma descrita para arquivos de origem.

Esse argumento é quase sempre obrigatório, exceto se um atributo main_class especificar uma classe no caminho de classe do tempo de execução ou se você especificar o argumento runtime_deps.

resources

List of labels; optional

Uma lista de arquivos de dados a serem incluídos em um jar Java.

Se os recursos forem especificados, eles serão agrupados no jar junto com os arquivos .class comuns produzidos pela compilação. O local dos recursos dentro do arquivo jar é determinado pela estrutura do projeto. O Bazel primeiro procura o layout padrão de diretório do Maven, que é um diretório "src" seguido por um "net" neto. Se ele não for encontrado, o Bazel procurará o diretório mais alto chamado "java" ou "javatests". Por exemplo, se um recurso estiver em <workspace root>/x/java/y/java/z, o caminho dele será y/java/z. Essa heurística não pode ser modificada. No entanto, o atributo resource_strip_prefix pode ser usado para especificar um diretório alternativo específico para arquivos de recursos.

Os recursos podem ser arquivos de origem ou gerados.

classpath_resources

List of labels; optional

NÃO USE ESTA OPÇÃO, EXCETO SE NÃO HOUVER OUTRO TIPO

Uma lista de recursos que precisam estar localizados na raiz da árvore java. A única finalidade desse atributo é oferecer compatibilidade com bibliotecas de terceiros que exigem que os recursos sejam encontrados no caminho de classe exatamente como "myconfig.xml". Só é permitida em binários, não em bibliotecas, devido ao risco de conflitos de namespace.

create_executable

Boolean; optional; nonconfigurable; default is True

Se o binário é executável. Os binários não executáveis coletam dependências Java transitivas de tempo de execução em um jar de implantação, mas não podem ser executados diretamente. Nenhum script de wrapper será criado se esse atributo for definido. É um erro defini-lo como 0 se os atributos launcher ou main_class forem definidos.
deploy_manifest_lines

List of strings; optional

Uma lista de linhas a serem adicionadas ao arquivo META-INF/manifest.mf gerado para o destino *_deploy.jar. O conteúdo desse atributo não está sujeito à substituição "Tornar variável".
javacopts

List of strings; optional

Opções extras do compilador para esta biblioteca. Sujeito à substituição da "variável variável" e à tokenização do shell do Bourne.

Essas opções do compilador são passadas para javac após as opções do compilador global.

jvm_flags

List of strings; optional

Uma lista de sinalizadores a serem incorporados no script de wrapper gerado para executar este binário. Sujeito à substituição de $(location) e "Tornar variável" e a tokenização do shell do Bourne.

O script de wrapper de um binário Java inclui uma definição de CLASSPATH (para encontrar todos os jars dependentes) e invoca o interpretador Java correto. A linha de comando gerada pelo script de wrapper inclui o nome da classe principal seguida de "$@", para que você possa transmitir outros argumentos depois do nome da classe. No entanto, os argumentos destinados à análise pela JVM precisam ser especificados antes do nome de classe na linha de comando. O conteúdo de jvm_flags é adicionado ao script do wrapper antes que o nome da classe seja listado.

Esse atributo não tem efeito nas saídas *_deploy.jar.

launcher

Label; optional

Especifique um binário que será usado para executar seu programa Java em vez do programa bin/java normal incluído no JDK. O destino precisa ser um cc_binary. Qualquer cc_binary que implemente a API Java Invocation pode ser especificado como um valor para esse atributo.

Por padrão, o Bazel usa o iniciador normal do JDK (bin/java ou java.exe).

A sinalização do Bazel --java_launcher relacionada afeta somente os destinos java_binary e java_test que não especificaram um atributo launcher.

As dependências nativas (C++, SWIG, JNI) serão criadas de maneira diferente, dependendo se você estiver usando a tela de início do JDK ou outra:

  • Se você estiver usando a tela de início normal do JDK (padrão), as dependências nativas serão criadas como uma biblioteca compartilhada chamada {name}_nativedeps.so, em que {name} é o atributo name dessa regra java_binary. O código não utilizado não é removido pelo vinculador nesta configuração.
  • Se você estiver usando qualquer outra tela de início, as dependências nativas (C++) serão vinculadas estaticamente a um binário chamado {name}_nativedeps, em que {name} é o atributo name dessa regra java_binary. Nesse caso, o vinculador removerá todos os códigos que considerar não usados do binário resultante, o que significa que qualquer código C++ acessado apenas por meio de JNI pode não ser vinculado, a menos que esse destino cc_library especifique alwayslink = 1.

Ao usar qualquer tela de início diferente da tela de início padrão do JDK, o formato da saída *_deploy.jar muda. Consulte os documentos java_binary principais para mais detalhes.

main_class

String; optional

Nome da classe com o método main() a ser usado como ponto de entrada. Se uma regra usar essa opção, ela não precisará de uma lista de srcs=[...]. Assim, com esse atributo, é possível tornar um executável de uma biblioteca Java que já contém um ou mais métodos main().

O valor desse atributo é um nome de classe, não um arquivo de origem. A classe precisa estar disponível no tempo de execução: ela pode ser compilada por esta regra (de srcs) ou fornecida por dependências diretas ou transitivas (por runtime_deps ou deps). Se a classe não estiver disponível, o binário falhará no tempo de execução. Não há verificação de tempo de compilação.

plugins

List of labels; optional

Plug-ins do compilador Java para execução em tempo de compilação. Cada java_plugin especificado nesse atributo será executado sempre que essa regra for criada. Uma biblioteca também pode herdar plug-ins de dependências que usam exported_plugins. Os recursos gerados pelo plug-in serão incluídos no jar resultante dessa regra.
resource_jars

List of labels; optional

Obsoleto: use java_import e deps ou runtime_deps.
resource_strip_prefix

String; optional

O prefixo do caminho que será removido dos recursos Java.

Se especificado, esse prefixo de caminho é retirado de todos os arquivos no atributo resources. É um erro um arquivo de recurso não estar nesse diretório. Se não for especificado (o padrão), o caminho do arquivo de recurso será determinado de acordo com a mesma lógica do pacote Java dos arquivos de origem. Por exemplo, um arquivo de origem em stuff/java/foo/bar/a.txt estará localizado em foo/bar/a.txt.

runtime_deps

List of labels; optional

Bibliotecas a serem disponibilizadas para o binário final ou para teste apenas no tempo de execução. Assim como deps comum, elas aparecerão no caminho de classe do tempo de execução, mas ao contrário delas, não no caminho de classe do tempo de compilação. As dependências necessárias apenas no momento da execução devem ser listadas aqui. As ferramentas de análise de dependência precisam ignorar os destinos que aparecem em runtime_deps e deps.
stamp

Integer; optional; default is 0

Se deve codificar informações de criação no binário. Valores possíveis:
  • stamp = 1: sempre carimba as informações do build no binário, mesmo em builds --nostamp (link em inglês). Essa configuração precisa ser evitada, já que ela pode eliminar o armazenamento em cache remoto do binário e qualquer ação downstream que dependa dele.
  • stamp = 0: sempre substitua as informações de build por valores constantes. Isso proporciona um bom armazenamento de resultados em cache.
  • stamp = -1: a incorporação de informações do build é controlada pela sinalização --[no]stamp.

Os binários carimbados não são recriados, a menos que as dependências mudem.

test_class

String; optional

A classe Java a ser carregada pelo executor de teste.

Por padrão, se esse argumento não estiver definido, o modo legado será usado e os argumentos de teste serão usados. Defina a sinalização --nolegacy_bazel_java_test para não substituir o primeiro argumento.

Esse atributo especifica o nome de uma classe Java a ser executada por esse teste. É raro precisar definir isso. Se esse argumento for omitido, ele será inferido usando o name do destino e o caminho relativo raiz-origem. Se o teste estiver localizado fora de uma raiz de origem conhecida, o Bazel informará um erro se test_class não estiver definido.

Para o JUnit3, a classe de teste precisa ser uma subclasse de junit.framework.TestCase ou ter um método estático público suite() que retorne um junit.framework.Test (ou uma subclasse de Test). Para JUnit4, a classe precisa ser anotada com org.junit.runner.RunWith.

Esse atributo permite que várias regras java_test compartilhem o mesmo Test (TestCase, TestSuite, ...). Normalmente, informações adicionais são transmitidas a ele (por exemplo, via jvm_flags=['-Dkey=value']) para que o comportamento seja diferente em cada caso, como a execução de um subconjunto diferente dos testes. Esse atributo também permite o uso de testes Java fora da árvore javatests.

use_launcher

Boolean; optional; default is True

Se o binário deve usar um iniciador personalizado.

Se for definido como falso, o atributo launcher e a sinalização --java_launcher relacionada serão ignorados para esse destino.

use_testrunner

Boolean; optional; default is True

Use a classe do executor de testes (por padrão, com.google.testing.junit.runner.BazelTestRunner) como o ponto de entrada principal de um programa Java e forneça a classe do executor como um valor da propriedade do sistema bazel.test_suite. Use-o para modificar o comportamento padrão, que é usar o executor de testes para regras java_test e não para regras java_binary. É improvável que você faça isso. Um dos usos é para regras AllTest invocadas por outra regra, por exemplo, para configurar um banco de dados antes de executar os testes. A regra AllTest precisa ser declarada como java_binary, mas ainda deve usar o executor de teste como o ponto de entrada principal. O nome de uma classe de execução de teste pode ser modificado com o atributo main_class.

java_package_configuration

Ver origem da regra
java_package_configuration(name, data, compatible_with, deprecation, distribs, features, javacopts, licenses, packages, restricted_to, tags, target_compatible_with, testonly, visibility)

Configuração a ser aplicada a um conjunto de pacotes. As configurações podem ser adicionadas a java_toolchain.javacoptss.

Exemplo:

java_package_configuration(
    name = "my_configuration",
    packages = [":my_packages"],
    javacopts = ["-Werror"],
)

package_group(
    name = "my_packages",
    packages = [
        "//com/my/project/...",
        "-//com/my/project/testing/...",
    ],
)

java_toolchain(
    ...,
    package_configuration = [
        ":my_configuration",
    ]
)

Argumentos

Atributos
name

Name; required

Um nome exclusivo para este destino.

data

List of labels; optional

A lista de arquivos necessários para essa configuração no tempo de execução.
javacopts

List of strings; optional

Sinalizadores do compilador Java.
packages

List of labels; optional

O conjunto de package_groups ao qual a configuração será aplicada.

plug-in java

Ver origem da regra
java_plugin(name, deps, srcs, data, resources, compatible_with, deprecation, distribs, exec_compatible_with, exec_properties, features, generates_api, javacopts, licenses, neverlink, output_licenses, plugins, processor_class, proguard_specs, resource_jars, resource_strip_prefix, restricted_to, tags, target_compatible_with, testonly, visibility)

java_plugin define plug-ins para o compilador Java executado pelo Bazel. No momento, os únicos tipos compatíveis de plug-ins são os processadores de anotações. Uma regra java_library ou java_binary pode executar plug-ins dependendo deles pelo atributo plugins. Um java_library também pode exportar plug-ins automaticamente para bibliotecas que dependem diretamente dele usando exported_plugins.

Destinos de saída implícita

  • libname.jar: um arquivo Java.

Os argumentos são idênticos a java_library, exceto pela adição do argumento processor_class.

Argumentos

Atributos
name

Name; required

Um nome exclusivo para este destino.

deps

List of labels; optional

A lista de bibliotecas a serem vinculadas a esta biblioteca. Veja comentários gerais sobre deps em Atributos típicos definidos pela maioria das regras de compilação.

Os jars criados pelas regras java_library listadas em deps estarão no caminho de classe do tempo de compilação dessa regra. Além disso, o fechamento transitivo de deps, runtime_deps e exports estará no caminho de classe do tempo de execução.

Por outro lado, os destinos no atributo data estão incluídos nos arquivos de execução, mas não no caminho de classe do tempo de compilação nem do tempo de execução.

srcs

List of labels; optional

A lista de arquivos de origem que são processados para criar o destino. Esse atributo é quase sempre obrigatório. Veja as exceções abaixo.

Os arquivos de origem do tipo .java são compilados. No caso de arquivos .java gerados, geralmente é aconselhável colocar o nome da regra de geração aqui, em vez do nome do próprio arquivo. Isso não apenas melhora a legibilidade, mas torna a regra mais resiliente a alterações futuras: se a regra de geração gerar arquivos diferentes no futuro, você só precisará corrigir um lugar: o outs da regra de geração. Não liste a regra de geração em deps porque ela é um ambiente autônomo.

Os arquivos de origem do tipo .srcjar são descompactados e compilados. Isso será útil se você precisar gerar um conjunto de arquivos .java com uma regra geral.

Regras: se a regra (normalmente genrule ou filegroup) gerar algum dos arquivos listados acima, eles serão usados da mesma forma descrita para arquivos de origem.

Esse argumento é quase sempre obrigatório, exceto se um atributo main_class especificar uma classe no caminho de classe do tempo de execução ou se você especificar o argumento runtime_deps.

data

List of labels; optional

A lista de arquivos necessários para essa biblioteca no momento da execução. Veja comentários gerais sobre data em Atributos típicos definidos pela maioria das regras de compilação.

Ao criar um java_library, o Bazel não coloca esses arquivos em nenhum lugar. Se os arquivos data forem gerados, o Bazel os gerará. Ao criar um teste que depende deste java_library, o Bazel copia ou vincula os arquivos data à área de arquivos de execução.

resources

List of labels; optional

Uma lista de arquivos de dados a serem incluídos em um jar Java.

Se os recursos forem especificados, eles serão agrupados no jar junto com os arquivos .class comuns produzidos pela compilação. O local dos recursos dentro do arquivo jar é determinado pela estrutura do projeto. O Bazel primeiro procura o layout padrão de diretório do Maven, que é um diretório "src" seguido por um "net" neto. Se ele não for encontrado, o Bazel procurará o diretório mais alto chamado "java" ou "javatests". Por exemplo, se um recurso estiver em <workspace root>/x/java/y/java/z, o caminho dele será y/java/z. Essa heurística não pode ser modificada. No entanto, o atributo resource_strip_prefix pode ser usado para especificar um diretório alternativo específico para arquivos de recursos.

Os recursos podem ser arquivos de origem ou gerados.

generates_api

Boolean; optional; default is False

Esse atributo marca os processadores de anotações que geram o código da API.

Se uma regra usar um processador de anotação de geração de API, outras regras que dependem dela poderão se referir ao código gerado apenas se as ações de compilação forem programadas após a regra de geração. Este atributo instrui o Bazel a introduzir restrições de programação quando --java_header_compile está ativado.

AVISO: esse atributo afeta o desempenho do build. Use-o somente se necessário.

javacopts

List of strings; optional

Opções extras do compilador para esta biblioteca. Sujeito à substituição da "variável variável" e à tokenização do shell do Bourne.

Essas opções do compilador são passadas para javac após as opções do compilador global.

Boolean; optional; default is False

Indica se esta biblioteca só deve ser usada para compilação e não durante a execução. Útil se a biblioteca for fornecida pelo ambiente de execução durante a execução. Exemplos dessas bibliotecas são as APIs do ambiente de desenvolvimento integrado para plug-ins de ambiente de desenvolvimento integrado ou tools.jar para tudo que é executado em um JDK padrão.

Observe que neverlink = 1 não impede que o compilador incorpore material dessa biblioteca em destinos de compilação que dependam dela, conforme permitido pela Especificação de linguagem Java (por exemplo, static final de String ou de tipos primitivos). Portanto, o caso de uso recomendado é quando a biblioteca de tempo de execução é idêntica à biblioteca de compilação.

Se a biblioteca do ambiente de execução for diferente da biblioteca de compilação, você precisará garantir que ela seja diferente apenas dos locais em que o JLS proíbe os compiladores de ficar em linha (e isso precisa ser aplicado a todas as versões futuras do JLS).

output_licenses

Licence type; optional

Consulte common attributes .
plugins

List of labels; optional

Plug-ins do compilador Java para execução em tempo de compilação. Cada java_plugin especificado nesse atributo será executado sempre que essa regra for criada. Uma biblioteca também pode herdar plug-ins de dependências que usam exported_plugins. Os recursos gerados pelo plug-in serão incluídos no jar resultante dessa regra.
processor_class

String; optional

A classe de processador é o tipo totalmente qualificado que o compilador Java deve usar como ponto de entrada para o processador de anotações. Se não for especificada, essa regra não contribuirá com um processador de anotações para o processamento de anotações do compilador Java, mas o caminho de classe de tempo de execução ainda será incluído no caminho do processador de anotações do compilador. Isso se destina principalmente ao uso por plug-ins propensos a erros, que são carregados do caminho do processador de anotações usando java.util.ServiceLoader.
proguard_specs

List of labels; optional

Arquivos a serem usados como especificação do Proguard. Eles descreverão o conjunto de especificações a serem usadas pelo Proguard. Se especificado, eles serão adicionados a qualquer destino android_binary, dependendo desta biblioteca. Os arquivos incluídos aqui precisam ter apenas regras idempotentes, ou seja, -dontnote, -dontwarn, pressnosideeffects e regras que comecem com -keep. Outras opções só podem aparecer no proguard_specs de android_binary, para garantir mesclagens não tautológicas.
resource_jars

List of labels; optional

Obsoleto: use java_import e deps ou runtime_deps.
resource_strip_prefix

String; optional

O prefixo do caminho que será removido dos recursos Java.

Se especificado, esse prefixo de caminho é retirado de todos os arquivos no atributo resources. É um erro um arquivo de recurso não estar nesse diretório. Se não for especificado (o padrão), o caminho do arquivo de recurso será determinado de acordo com a mesma lógica do pacote Java dos arquivos de origem. Por exemplo, um arquivo de origem em stuff/java/foo/bar/a.txt estará localizado em foo/bar/a.txt.

java_runtime

Ver origem da regra
java_runtime(name, srcs, compatible_with, default_cds, deprecation, distribs, features, hermetic_srcs, java, java_home, lib_modules, licenses, restricted_to, tags, target_compatible_with, testonly, version, visibility)

Especifica a configuração de um tempo de execução Java.

Exemplo:

java_runtime(
    name = "jdk-9-ea+153",
    srcs = glob(["jdk9-ea+153/**"]),
    java_home = "jdk9-ea+153",
)

Argumentos

Atributos
name

Name; required

Um nome exclusivo para este destino.

srcs

List of labels; optional

Todos os arquivos no ambiente de execução.
default_cds

Label; optional

Arquivo CDS padrão para java_runtime hermético. Quando o hermético é ativado para um destino java_binary e se o destino não fornece seu próprio arquivo CDS especificando o atributo classlist, o CDS padrão java_runtime é empacotado no JAR de implantação hermético.
hermetic_srcs

List of labels; optional

Arquivos no ambiente de execução necessários para implantações herméticas.
java

Label; optional

O caminho para o executável java.
java_home

String; optional

O caminho para a raiz do ambiente de execução. Sujeito à substituição da variável"Make". Se esse caminho for absoluto, a regra denotará um tempo de execução Java não hermético com um caminho conhecido. Nesse caso, os atributos srcs e java precisam estar vazios.
lib_modules

Label; optional

O arquivo lib/modules necessário para implantações herméticas.
version

Integer; optional; default is 0

A versão do recurso do tempo de execução do Java. Ou seja, o número inteiro retornado por Runtime.version().feature().

conjunto de ferramentas java

Ver origem da regra
java_toolchain(name, android_lint_data, android_lint_jvm_opts, android_lint_opts, android_lint_package_configuration, android_lint_runner, bootclasspath, compatible_with, deprecation, deps_checker, distribs, features, forcibly_disable_header_compilation, genclass, header_compiler, header_compiler_direct, ijar, jacocorunner, java_runtime, javabuilder, javabuilder_data, javabuilder_jvm_opts, javac_supports_multiplex_workers, javac_supports_workers, javacopts, jvm_opts, licenses, oneversion, oneversion_whitelist, package_configuration, proguard_allowlister, resourcejar, restricted_to, singlejar, source_version, tags, target_compatible_with, target_version, testonly, timezone_data, tools, turbine_data, turbine_jvm_opts, visibility, xlint)

Especifica a configuração do compilador Java. O conjunto de ferramentas a ser usado pode ser alterado por meio do argumento --java_toolchain. Normalmente, você não precisa escrever esse tipo de regra, a menos que queira ajustar o compilador Java.

Exemplos

Um exemplo simples seria:

java_toolchain(
    name = "toolchain",
    source_version = "7",
    target_version = "7",
    bootclasspath = ["//tools/jdk:bootclasspath"],
    xlint = [ "classfile", "divzero", "empty", "options", "path" ],
    javacopts = [ "-g" ],
    javabuilder = ":JavaBuilder_deploy.jar",
)

Argumentos

Atributos
name

Name; required

Um nome exclusivo para este destino.

android_lint_data

List of labels; optional

Rótulos de ferramentas disponíveis para expansão de rótulo em android_lint_jvm_opts.
android_lint_jvm_opts

List of strings; optional

Lista de argumentos para a JVM ao invocar o Android Lint.
android_lint_opts

List of strings; optional

Lista de argumentos do Android Lint.
android_lint_package_configuration

List of labels; optional

Configuração de lint do Android que precisa ser aplicada aos grupos de pacotes especificados.
android_lint_runner

Label; optional

Rótulo do executor do Android Lint, se houver.
bootclasspath

List of labels; optional

As entradas de bootclasspath de destino Java. Corresponde à sinalização -bootclasspath de javac.
deps_checker

List of labels; optional

Rótulo do jar de implantação ImportDepsChecker.
forcibly_disable_header_compilation

Boolean; optional; default is False

Modifica --java_header_compile para desativar a compilação de cabeçalho em plataformas que não são compatíveis com ela, por exemplo, JDK 7 Bazel.
genclass

List of labels; required

Rótulo do jar de implantação GenClass.
header_compiler

List of labels; optional

Rótulo do compilador de cabeçalho. Obrigatório se --java_header_compile estiver ativado.
header_compiler_direct

List of labels; optional

Rótulo opcional do compilador de cabeçalho a ser usado em ações de caminho de classe direto que não incluem processadores de anotações que geram API.

Essa ferramenta não é compatível com o processamento de anotações.

ijar

List of labels; required

Rótulo do executável do ijar.
jacocorunner

Label; optional

Rótulo do jar de implantação JacocoCoverageRunner.
java_runtime

Label; required

O java_runtime a ser usado com este conjunto de ferramentas. O padrão é java_runtime na configuração de execução.
javabuilder

List of labels; required

Rótulo do jar de implantação JavaBuilder.
javabuilder_data

List of labels; optional

Rótulos de dados disponíveis para expansão de rótulos em javabuilder_jvm_opts.
javabuilder_jvm_opts

List of strings; optional

A lista de argumentos para a JVM ao invocar JavaBuilder.
javac_supports_multiplex_workers

Boolean; optional; default is True

Verdadeiro se o JavaBuilder for compatível com a execução como um worker persistente multiplex e falso se não for.
javac_supports_workers

Boolean; optional; default is True

Verdadeiro se o JavaBuilder for compatível com a execução como um worker persistente, falso se não for.
javacopts

List of strings; optional

A lista de argumentos extras para o compilador Java. Consulte a documentação do compilador Java para ver a lista completa de possíveis sinalizações do compilador Java.
jvm_opts

List of strings; optional

A lista de argumentos para a JVM ao invocar o compilador Java. Consulte a documentação da máquina virtual Java para ver a lista completa de possíveis sinalizações para essa opção.
oneversion

Label; optional

Rótulo do binário de aplicação de uma versão.
oneversion_whitelist

Label; optional

Rótulo da lista de permissões de uma versão.
package_configuration

List of labels; optional

Configuração que deve ser aplicada aos grupos de pacotes especificados.
proguard_allowlister

Label; optional; default is @bazel_tools//tools/jdk:proguard_whitelister

Rótulo da lista de permissões do Proguard.
resourcejar

List of labels; optional

Rótulo do executável do builder do jar de recursos.
singlejar

List of labels; required

Rótulo do jar de implantação do SingleJar.
source_version

String; optional

A versão de origem Java (por exemplo, "6" ou "7"). Ele especifica qual conjunto de estruturas de código é permitido no código-fonte Java.
target_version

String; optional

A versão de destino do Java (por exemplo, "6" ou "7"). Ele especifica para qual ambiente de execução do Java a classe será criada.
timezone_data

Label; optional

Rótulo de um jar de recurso com dados de fuso horário. Se definido, os dados de fuso horário são adicionados como uma dependência implicitamente de tempo de execução de todas as regras de java_binary.
tools

List of labels; optional

Rótulos de ferramentas disponíveis para expansão de rótulos em jvm_opts.
turbine_data

List of labels; optional

Rótulos de dados disponíveis para expansão de rótulo em turbine_jvm_opts.
turbine_jvm_opts

List of strings; optional

A lista de argumentos para a JVM ao invocar a turbina.
xlint

List of strings; optional

A lista de avisos a serem adicionados ou removidos da lista padrão. Ele é antecedido por um traço para ser removido. Consulte a documentação Javac sobre as opções -Xlint para obter mais informações.