Regras
- java_binary
- java_import
- java_library
- java_test
- java_package_configuration
- java_plugin
- java_runtime
- java_single_jar
- java_toolchain
java_binary
Ver origem da regrajava_binary(name, deps, srcs, data, resources, add_exports, add_opens, args, bootclasspath, classpath_resources, compatible_with, create_executable, deploy_env, deploy_manifest_lines, deprecation, env, exec_compatible_with, exec_group_compatible_with, exec_properties, features, javacopts, jvm_flags, launcher, licenses, main_class, neverlink, output_licenses, package_metadata, plugins, resource_strip_prefix, restricted_to, runtime_deps, stamp, tags, target_compatible_with, testonly, toolchains, use_launcher, use_testrunner, visibility)
Cria um arquivo Java ("arquivo jar") e um script shell de wrapper com o mesmo nome da regra.
O script shell wrapper usa um classpath que inclui, entre outras coisas, um arquivo JAR para cada
biblioteca de que o binário depende. Ao executar o script shell de wrapper, qualquer variável de ambiente JAVABIN
não vazia terá precedência sobre a versão especificada pela flag --java_runtime_version
do Bazel.
O script wrapper aceita várias flags exclusivas. Consulte
java_stub_template.txt
para conferir uma lista de flags configuráveis e variáveis de ambiente aceitas pelo wrapper.
Metas de saída implícitas
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 fontes ("source jar").name_deploy.jar
: um arquivo Java adequado para implantação (criado somente se solicitado explicitamente).A criação da meta
<name>_deploy.jar
para sua regra cria um arquivo jar independente com um manifesto que permite a execução com o comandojava -jar
ou com a opção--singlejar
do script de wrapper. É melhor usar o script de wrapper do quejava -jar
porque ele também transmite as flags da JVM e as opções para carregar bibliotecas nativas.O JAR de implantação contém todas as classes que seriam encontradas por um carregador de classes que pesquisou o classpath do script wrapper do binário do início ao fim. Ele também contém as bibliotecas nativas necessárias para dependências. Elas são carregadas automaticamente na JVM durante a execução.
Se o destino especificar um atributo launcher, em vez de ser um arquivo JAR normal, o _deploy.jar será um binário nativo. Ele vai conter o iniciador e todas as dependências nativas (C++) da sua regra, todos vinculados a um binário estático. Os bytes do arquivo jar real serão anexados a esse binário nativo, criando um único blob binário que contém o executável e o código Java. Você pode executar o arquivo JAR resultante diretamente como faria com qualquer binário nativo.
name_deploy-src.jar
: um arquivo que contém as fontes coletadas do fechamento transitivo do destino. Elas corresponderão às classes nodeploy.jar
, exceto quando os jars não tiverem um jar de origem correspondente.
É recomendável usar o nome do arquivo de origem que é o principal ponto de entrada do
aplicativo (sem a extensão). Por exemplo, se o ponto de entrada for chamado de
Main.java
, o nome poderá ser Main
.
Um atributo deps
não é permitido em uma regra java_binary
sem srcs
. Uma regra desse tipo exige 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
)
Em vez disso, faça o seguinte:
java_binary(
name = "DoThisInstead",
srcs = [
...,
":generating_rule",
],
)
Argumentos
Atributos | |
---|---|
name |
Nome: obrigatório Um nome exclusivo para essa segmentação. |
deps
|
Lista de rótulos. O padrão é deps em
Atributos típicos definidos pela
maioria das regras de build.
|
srcs
|
Lista de rótulos. O padrão é
Os arquivos de origem do tipo
Os arquivos de origem do tipo
Regras: se a regra (normalmente
Esse argumento é quase sempre obrigatório, exceto se um atributo
|
data
|
Lista de rótulos. O padrão é data em Atributos típicos definidos pela maioria das regras de build.
|
resources
|
Lista de rótulos. O padrão é Os recursos podem ser arquivos de origem ou gerados.
Se os recursos forem especificados, eles serão agrupados no jar junto com os arquivos |
add_exports
|
Lista de strings. O padrão é module ou package especificado.
Isso corresponde às flags javac e JVM --add-exports=. |
add_opens
|
Lista de strings. O padrão é module ou
package especificado.
Isso corresponde às flags javac e JVM --add-opens=. |
bootclasspath
|
Rótulo; o padrão é |
classpath_resources
|
Lista de rótulos. O padrão é
Uma lista de recursos que precisam estar na raiz da árvore Java. O único propósito desse atributo é oferecer suporte a bibliotecas de terceiros que exigem que os recursos sejam encontrados no classpath exatamente como |
create_executable
|
Booleano; o padrão é java_single_jar .
|
deploy_env
|
Lista de rótulos. O padrão é java_binary que representam o ambiente de implantação para este 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 classpath de tempo de execução (e o 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
|
Lista de strings. O padrão é META-INF/manifest.mf gerado para a
meta *_deploy.jar . O conteúdo desse atributo não está sujeito à substituição de "Criar variável".
|
javacopts
|
Lista de strings. O padrão é Essas opções são transmitidas para o javac depois das opções globais. |
jvm_flags
|
Lista de strings. O padrão é O script de wrapper para 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 wrapper inclui o nome da classe principal seguido por um Esse atributo não tem efeito nas saídas de |
launcher
|
Rótulo; o padrão é 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 inicializador normal do JDK (bin/java ou java.exe). A flag As dependências nativas (C++, SWIG, JNI) são criadas de maneira diferente dependendo se você está usando o iniciador do JDK ou outro:
Ao usar um iniciador diferente do padrão do JDK, o formato da saída
|
main_class
|
String; o padrão é main() a ser usado como ponto de entrada.
Se uma regra usar essa opção, ela não precisará de uma lista srcs=[...] .
Assim, com esse atributo, é possível criar 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 essa regra (de |
neverlink
|
Booleano; o padrão é |
plugins
|
Lista de rótulos. O padrão é java_plugin especificado nesse atributo será executado sempre que a 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_strip_prefix
|
String; o padrão é
Se especificado, esse prefixo de caminho será removido de todos os arquivos no atributo |
runtime_deps
|
Lista de rótulos. O padrão é deps comuns, eles aparecem no caminho de classe de execução, mas não no caminho de classe de compilação. As dependências necessárias apenas no tempo de execução devem ser
listadas aqui. As ferramentas de análise de dependências precisam ignorar destinos que aparecem em runtime_deps e deps .
|
stamp
|
Número inteiro. O padrão é
Os binários carimbados não são recriados, a menos que as dependências mudem. |
use_launcher
|
Booleano; o padrão é Se esse atributo for definido como "false", o atributo launcher e a flag |
use_testrunner
|
Booleano; o padrão é com.google.testing.junit.runner.BazelTestRunner ) como o ponto de entrada principal de um programa Java e forneça a classe de teste ao executor como um valor da propriedade do sistema bazel.test_suite .
É possível usar isso para substituir o comportamento padrão, que é usar o executor de testes para regras java_test ,
e não usá-lo para regras java_binary . É improvável que você queira fazer isso. Um uso é para regras AllTest
invocadas por outra regra (para configurar um banco de dados
antes de executar os testes, por exemplo). A regra AllTest
precisa ser declarada como um java_binary , mas ainda
usa o executor de testes como ponto de entrada principal.
O nome de uma classe de executor de teste pode ser substituído com o atributo main_class .
|
java_import
Ver origem da regrajava_import(name, deps, data, add_exports, add_opens, compatible_with, constraints, deprecation, exec_compatible_with, exec_group_compatible_with, exec_properties, exports, features, jars, licenses, neverlink, package_metadata, proguard_specs, restricted_to, runtime_deps, srcjar, tags, target_compatible_with, testonly, toolchains, visibility)
Essa regra permite o uso de arquivos .jar
pré-compilados como bibliotecas para 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 |
Nome: obrigatório Um nome exclusivo para essa segmentação. |
deps
|
Lista de rótulos. O padrão é |
data
|
Lista de rótulos. O padrão é |
add_exports
|
Lista de strings. O padrão é module ou package especificado.
Isso corresponde às flags javac e JVM --add-exports=. |
add_opens
|
Lista de strings. O padrão é module ou
package especificado.
Isso corresponde às flags javac e JVM --add-opens=. |
constraints
|
Lista de strings. O padrão é |
exports
|
Lista de rótulos. O padrão é |
jars
|
Lista de marcadores; obrigatório A lista de arquivos JAR fornecidos para destinos Java que dependem desse destino. |
neverlink
|
Booleano; o padrão é tools.jar para qualquer coisa executada em
um JDK padrão.
|
proguard_specs
|
Lista de rótulos. O padrão é android_binary que dependa dessa biblioteca.
Os arquivos incluídos aqui precisam ter apenas regras idempotentes, ou seja, -dontnote, -dontwarn, assumenosideeffects e regras que começam com -keep. Outras opções só podem aparecer em
proguard_specs do android_binary para garantir fusões não tautológicas.
|
runtime_deps
|
Lista de rótulos. O padrão é |
srcjar
|
Rótulo; o padrão é |
java_library
Ver origem da regrajava_library(name, deps, srcs, data, resources, add_exports, add_opens, bootclasspath, compatible_with, deprecation, exec_compatible_with, exec_group_compatible_with, exec_properties, exported_plugins, exports, features, javabuilder_jvm_flags, javacopts, licenses, neverlink, package_metadata, plugins, proguard_specs, resource_strip_prefix, restricted_to, runtime_deps, tags, target_compatible_with, testonly, toolchains, visibility)
Essa regra compila e vincula fontes em um arquivo .jar
.
Saídas implícitas
libname.jar
: um arquivo Java que contém os arquivos de classe.libname-src.jar
: um arquivo que contém as fontes ("source jar").
Argumentos
Atributos | |
---|---|
name |
Nome: obrigatório Um nome exclusivo para essa segmentação. |
deps
|
Lista de rótulos. O padrão é deps em
Atributos típicos definidos pela
maioria das regras de build.
Os jars criados pelas regras
Por outro lado, os destinos no atributo |
srcs
|
Lista de rótulos. O padrão é
Os arquivos de origem do tipo
Os arquivos de origem do tipo
Regras: se a regra (normalmente
Os arquivos de origem do tipo Todos os outros arquivos serão ignorados, desde que haja pelo menos um arquivo de um tipo descrito acima. Caso contrário, um erro será gerado.
Esse argumento é quase sempre obrigatório, exceto se você especificar o argumento |
data
|
Lista de rótulos. O padrão é data em
Atributos típicos definidos pela
maioria das regras de build.
Ao criar um |
resources
|
Lista de rótulos. O padrão é Os recursos podem ser arquivos de origem ou gerados.
Se os recursos forem especificados, eles serão agrupados no jar junto com os arquivos |
add_exports
|
Lista de strings. O padrão é module ou package especificado.
Isso corresponde às flags javac e JVM --add-exports=. |
add_opens
|
Lista de strings. O padrão é module ou
package especificado.
Isso corresponde às flags javac e JVM --add-opens=. |
bootclasspath
|
Rótulo; o padrão é |
exported_plugins
|
Lista de rótulos. O padrão é java_plugin s (por exemplo, processadores de anotações) a serem exportados para bibliotecas que dependem diretamente desta biblioteca.
A lista especificada de |
exports
|
Lista de rótulos. O padrão é
Listar regras aqui as disponibiliza para regras principais, como se elas dependessem explicitamente dessas regras. Isso não é verdade para
Resumo: uma regra X pode acessar o código em Y se houver um caminho de dependência entre eles que comece com uma aresta
Suponha que A dependa de B e que B dependa de C. Nesse caso, C é uma dependência transitiva de A. Portanto, mudar as fontes de C e reconstruir A vai reconstruir tudo corretamente. No entanto, A não poderá usar classes em C. Para permitir isso, A precisa declarar C no O fechamento de bibliotecas exportadas está disponível para todas as regras principais diretas. 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. Seguindo o exemplo anterior, se B exporta C e também quer usar C, ele precisa listar C no próprio |
javabuilder_jvm_flags
|
Lista de strings. O padrão é |
javacopts
|
Lista de strings. O padrão é Essas opções são transmitidas para o javac depois das opções globais. |
neverlink
|
Booleano; o padrão é tools.jar para qualquer coisa
executada em um JDK padrão.
Observe que Se a biblioteca de tempo de execução for diferente da biblioteca de compilação, verifique se ela difere apenas em locais em que a JLS proíbe os compiladores de inlining (e isso precisa ser válido para todas as versões futuras da JLS). |
plugins
|
Lista de rótulos. O padrão é java_plugin especificado nesse atributo será executado sempre que a 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
|
Lista de rótulos. O padrão é android_binary que dependa dessa biblioteca.
Os arquivos incluídos aqui precisam ter apenas regras idempotentes, ou seja, -dontnote, -dontwarn, assumenosideeffects e regras que começam com -keep. Outras opções só podem aparecer em
proguard_specs do android_binary para garantir fusões não tautológicas.
|
resource_strip_prefix
|
String; o padrão é
Se especificado, esse prefixo de caminho será removido de todos os arquivos no atributo |
runtime_deps
|
Lista de rótulos. O padrão é deps comuns, eles aparecem no caminho de classe de execução, mas não no caminho de classe de compilação. As dependências necessárias apenas no tempo de execução devem ser
listadas aqui. As ferramentas de análise de dependências precisam ignorar destinos que aparecem em runtime_deps e deps .
|
java_test
Ver origem da regrajava_test(name, deps, srcs, data, resources, add_exports, add_opens, args, bootclasspath, classpath_resources, compatible_with, create_executable, deploy_manifest_lines, deprecation, env, env_inherit, exec_compatible_with, exec_group_compatible_with, exec_properties, features, flaky, javacopts, jvm_flags, launcher, licenses, local, main_class, neverlink, package_metadata, plugins, 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 em Java. Um teste é um wrapper binário ao redor do código de teste. O método principal do executor de testes é invocado em vez da classe principal ser compilada.
Metas de saída implícitas
name.jar
: um arquivo Java.name_deploy.jar
: um arquivo Java adequado para implantação. (Criado somente se solicitado explicitamente.) Consulte a descrição da saídaname_deploy.jar
de java_binary para mais detalhes.
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 |
Nome: obrigatório Um nome exclusivo para essa segmentação. |
deps
|
Lista de rótulos. O padrão é deps em
Atributos típicos definidos pela
maioria das regras de build.
|
srcs
|
Lista de rótulos. O padrão é
Os arquivos de origem do tipo
Os arquivos de origem do tipo
Regras: se a regra (normalmente
Esse argumento é quase sempre obrigatório, exceto se um atributo
|
data
|
Lista de rótulos. O padrão é data em Atributos típicos definidos pela maioria das regras de build.
|
resources
|
Lista de rótulos. O padrão é Os recursos podem ser arquivos de origem ou gerados.
Se os recursos forem especificados, eles serão agrupados no jar junto com os arquivos |
add_exports
|
Lista de strings. O padrão é module ou package especificado.
Isso corresponde às flags javac e JVM --add-exports=. |
add_opens
|
Lista de strings. O padrão é module ou
package especificado.
Isso corresponde às flags javac e JVM --add-opens=. |
bootclasspath
|
Rótulo; o padrão é |
classpath_resources
|
Lista de rótulos. O padrão é
Uma lista de recursos que precisam estar na raiz da árvore Java. O único propósito desse atributo é oferecer suporte a bibliotecas de terceiros que exigem que os recursos sejam encontrados no classpath exatamente como |
create_executable
|
Booleano; o padrão é java_single_jar .
|
deploy_manifest_lines
|
Lista de strings. O padrão é META-INF/manifest.mf gerado para a
meta *_deploy.jar . O conteúdo desse atributo não está sujeito à substituição de "Criar variável".
|
javacopts
|
Lista de strings. O padrão é Essas opções são transmitidas para o javac depois das opções globais. |
jvm_flags
|
Lista de strings. O padrão é O script de wrapper para 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 wrapper inclui o nome da classe principal seguido por um Esse atributo não tem efeito nas saídas de |
launcher
|
Rótulo; o padrão é 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 inicializador normal do JDK (bin/java ou java.exe). A flag As dependências nativas (C++, SWIG, JNI) são criadas de maneira diferente dependendo se você está usando o iniciador do JDK ou outro:
Ao usar um iniciador diferente do padrão do JDK, o formato da saída
|
main_class
|
String; o padrão é main() a ser usado como ponto de entrada.
Se uma regra usar essa opção, ela não precisará de uma lista srcs=[...] .
Assim, com esse atributo, é possível criar 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 essa regra (de |
neverlink
|
Booleano; o padrão é |
plugins
|
Lista de rótulos. O padrão é java_plugin especificado nesse atributo será executado sempre que a 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_strip_prefix
|
String; o padrão é
Se especificado, esse prefixo de caminho será removido de todos os arquivos no atributo |
runtime_deps
|
Lista de rótulos. O padrão é deps comuns, eles aparecem no caminho de classe de execução, mas não no caminho de classe de compilação. As dependências necessárias apenas no tempo de execução devem ser
listadas aqui. As ferramentas de análise de dependências precisam ignorar destinos que aparecem em runtime_deps e deps .
|
stamp
|
Número inteiro. O padrão é
Os binários carimbados não são recriados, a menos que as dependências mudem. |
test_class
|
String; o padrão é
Por padrão, se esse argumento não for definido, o modo legado será usado, e os argumentos de teste serão usados. Defina a flag
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
Para o JUnit3, a classe de teste precisa ser uma subclasse de
Esse atributo permite que várias regras |
use_launcher
|
Booleano; o padrão é Se esse atributo for definido como "false", o atributo launcher e a flag |
use_testrunner
|
Booleano; o padrão é com.google.testing.junit.runner.BazelTestRunner ) como o ponto de entrada principal de um programa Java e forneça a classe de teste ao executor como um valor da propriedade do sistema bazel.test_suite .
É possível usar isso para substituir o comportamento padrão, que é usar o executor de testes para regras java_test ,
e não usá-lo para regras java_binary . É improvável que você queira fazer isso. Um uso é para regras AllTest
invocadas por outra regra (para configurar um banco de dados
antes de executar os testes, por exemplo). A regra AllTest
precisa ser declarada como um java_binary , mas ainda
usa o executor de testes como ponto de entrada principal.
O nome de uma classe de executor de teste pode ser substituído com o atributo main_class .
|
java_package_configuration
Ver origem da regrajava_package_configuration(name, data, compatible_with, deprecation, exec_compatible_with, exec_group_compatible_with, exec_properties, features, javacopts, output_licenses, package_metadata, packages, restricted_to, system, tags, target_compatible_with, testonly, toolchains, visibility)
Configuração a ser aplicada a um conjunto de pacotes.
As configurações podem ser adicionadas a
java_toolchain.javacopts
s.
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 |
Nome: obrigatório Um nome exclusivo para essa segmentação. |
data
|
Lista de rótulos. O padrão é |
javacopts
|
Lista de strings. O padrão é |
output_licenses
|
Lista de strings. O padrão é |
packages
|
Lista de rótulos. O padrão é package_group s a que a configuração deve ser aplicada.
|
system
|
Rótulo; o padrão é |
java_plugin
Ver origem da regrajava_plugin(name, deps, srcs, data, resources, add_exports, add_opens, bootclasspath, compatible_with, deprecation, exec_compatible_with, exec_group_compatible_with, exec_properties, features, generates_api, javabuilder_jvm_flags, javacopts, licenses, neverlink, output_licenses, package_metadata, plugins, processor_class, proguard_specs, resource_strip_prefix, restricted_to, tags, target_compatible_with, testonly, toolchains, visibility)
O java_plugin
define plug-ins para o compilador Java executado pelo Bazel. O único tipo de plug-ins compatível são os processadores de anotações. Uma regra java_library
ou
java_binary
pode executar plug-ins dependendo deles pelo atributo plugins
(link em inglês). Um java_library
também pode exportar automaticamente plug-ins para bibliotecas que
dependem diretamente dele usando
exported_plugins
.
Metas de saída implícitas
libname.jar
: um arquivo Java.
Os argumentos são um subconjunto (e têm semântica idêntica) dos de
java_library(),
exceto pela adição dos argumentos processor_class
e
generates_api
.
Argumentos
Atributos | |
---|---|
name |
Nome: obrigatório Um nome exclusivo para essa segmentação. |
deps
|
Lista de rótulos. O padrão é deps em
Atributos típicos definidos pela
maioria das regras de build.
Os jars criados pelas regras
Por outro lado, os destinos no atributo |
srcs
|
Lista de rótulos. O padrão é
Os arquivos de origem do tipo
Os arquivos de origem do tipo
Regras: se a regra (normalmente
Os arquivos de origem do tipo Todos os outros arquivos serão ignorados, desde que haja pelo menos um arquivo de um tipo descrito acima. Caso contrário, um erro será gerado.
Esse argumento é quase sempre obrigatório, exceto se você especificar o argumento |
data
|
Lista de rótulos. O padrão é data em
Atributos típicos definidos pela
maioria das regras de build.
Ao criar um |
resources
|
Lista de rótulos. O padrão é Os recursos podem ser arquivos de origem ou gerados.
Se os recursos forem especificados, eles serão agrupados no jar junto com os arquivos |
add_exports
|
Lista de strings. O padrão é module ou package especificado.
Isso corresponde às flags javac e JVM --add-exports=. |
add_opens
|
Lista de strings. O padrão é module ou
package especificado.
Isso corresponde às flags javac e JVM --add-opens=. |
bootclasspath
|
Rótulo; o padrão é |
generates_api
|
Booleano; o padrão é Se uma regra usar um processador de anotações que gera APIs, outras regras que dependem dela só poderão se referir ao código gerado se as ações de compilação forem programadas depois da regra de geração. Esse atributo instrui o Bazel a introduzir restrições de programação quando --java_header_compilation está ativado. AVISO: esse atributo afeta o desempenho do build. Use-o apenas se necessário. |
javabuilder_jvm_flags
|
Lista de strings. O padrão é |
javacopts
|
Lista de strings. O padrão é Essas opções são transmitidas para o javac depois das opções globais. |
neverlink
|
Booleano; o padrão é tools.jar para qualquer coisa
executada em um JDK padrão.
Observe que Se a biblioteca de tempo de execução for diferente da biblioteca de compilação, verifique se ela difere apenas em locais em que a JLS proíbe os compiladores de inlining (e isso precisa ser válido para todas as versões futuras da JLS). |
output_licenses
|
Lista de strings. O padrão é |
plugins
|
Lista de rótulos. O padrão é java_plugin especificado nesse atributo será executado sempre que a 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; o padrão é |
proguard_specs
|
Lista de rótulos. O padrão é android_binary que dependa dessa biblioteca.
Os arquivos incluídos aqui precisam ter apenas regras idempotentes, ou seja, -dontnote, -dontwarn, assumenosideeffects e regras que começam com -keep. Outras opções só podem aparecer em
proguard_specs do android_binary para garantir fusões não tautológicas.
|
resource_strip_prefix
|
String; o padrão é
Se especificado, esse prefixo de caminho será removido de todos os arquivos no atributo |
java_runtime
Ver origem da regrajava_runtime(name, srcs, compatible_with, default_cds, deprecation, exec_compatible_with, exec_group_compatible_with, exec_properties, features, hermetic_srcs, hermetic_static_libs, java, java_home, lib_ct_sym, lib_modules, output_licenses, package_metadata, restricted_to, tags, target_compatible_with, testonly, toolchains, version, visibility)
Especifica a configuração de um ambiente 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 |
Nome: obrigatório Um nome exclusivo para essa segmentação. |
srcs
|
Lista de rótulos. O padrão é |
default_cds
|
Rótulo; o padrão é java_runtime hermético. Quando o modo hermético
está ativado para um destino java_binary , o CDS padrão java_runtime
é empacotado no JAR de implantação hermética.
|
hermetic_srcs
|
Lista de rótulos. O padrão é |
hermetic_static_libs
|
Lista de rótulos. O padrão é |
java
|
Rótulo; o padrão é |
java_home
|
String; o padrão é srcs e java precisam estar vazios.
|
lib_ct_sym
|
Rótulo; o padrão é --release . Se não for especificado e houver exatamente um arquivo em srcs cujo caminho termine com /lib/ct.sym , esse arquivo será usado.
|
lib_modules
|
Rótulo; o padrão é |
output_licenses
|
Lista de strings. O padrão é |
version
|
Número inteiro. O padrão é Runtime.version().feature() .
|
java_single_jar
Ver origem da regrajava_single_jar(name, deps, compatible_with, compress, deploy_env, deploy_manifest_lines, deprecation, exclude_build_data, exec_compatible_with, exec_group_compatible_with, exec_properties, features, multi_release, package_metadata, restricted_to, tags, target_compatible_with, testonly, toolchains, visibility)
Argumentos
Atributos | |
---|---|
name |
Nome: obrigatório Um nome exclusivo para essa segmentação. |
deps
|
Lista de rótulos. O padrão é |
compress
|
String; o padrão é |
deploy_env
|
Lista de rótulos. O padrão é |
deploy_manifest_lines
|
Lista de strings. O padrão é META-INF/manifest.mf .
|
exclude_build_data
|
Booleano; o padrão é |
multi_release
|
Booleano; o padrão é |
java_toolchain
Ver origem da regrajava_toolchain(name, android_lint_data, android_lint_jvm_opts, android_lint_opts, android_lint_package_configuration, android_lint_runner, bootclasspath, compatible_javacopts, compatible_with, deprecation, deps_checker, exec_compatible_with, exec_group_compatible_with, exec_properties, features, forcibly_disable_header_compilation, genclass, header_compiler, header_compiler_builtin_processors, header_compiler_direct, ijar, jacocorunner, java_runtime, javabuilder, javabuilder_data, javabuilder_jvm_opts, javac_supports_multiplex_workers, javac_supports_worker_cancellation, javac_supports_worker_multiplex_sandboxing, javac_supports_workers, javacopts, jspecify_implicit_deps, jspecify_javacopts, jspecify_packages, jspecify_processor, jspecify_processor_class, jspecify_stubs, jvm_opts, licenses, misc, oneversion, oneversion_allowlist, oneversion_allowlist_for_tests, oneversion_whitelist, package_configuration, package_metadata, proguard_allowlister, reduced_classpath_incompatible_processors, restricted_to, singlejar, source_version, tags, target_compatible_with, target_version, testonly, timezone_data, toolchains, tools, turbine_data, turbine_jvm_opts, visibility, xlint)
Especifica a configuração do compilador Java. A cadeia de ferramentas a ser usada pode ser alterada com o argumento --java_toolchain. Normalmente, você não deve escrever esse tipo de regra, a menos que queira ajustar seu 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 |
Nome: obrigatório Um nome exclusivo para essa segmentação. |
android_lint_data
|
Lista de rótulos. O padrão é |
android_lint_jvm_opts
|
Lista de strings. O padrão é |
android_lint_opts
|
Lista de strings. O padrão é |
android_lint_package_configuration
|
Lista de rótulos. O padrão é |
android_lint_runner
|
Rótulo; o padrão é |
bootclasspath
|
Lista de rótulos. O padrão é |
compatible_javacopts
|
nulo; o padrão é |
deps_checker
|
Rótulo; o padrão é |
forcibly_disable_header_compilation
|
Booleano; o padrão é |
genclass
|
Rótulo; o padrão é |
header_compiler
|
Rótulo; o padrão é |
header_compiler_builtin_processors
|
Lista de strings. O padrão é |
header_compiler_direct
|
Rótulo; o padrão é Essa ferramenta não é compatível com o processamento de anotações. |
ijar
|
Rótulo; o padrão é |
jacocorunner
|
Rótulo; o padrão é |
java_runtime
|
Rótulo; o padrão é |
javabuilder
|
Rótulo; o padrão é |
javabuilder_data
|
Lista de rótulos. O padrão é |
javabuilder_jvm_opts
|
Lista de strings. O padrão é |
javac_supports_multiplex_workers
|
Booleano; o padrão é |
javac_supports_worker_cancellation
|
Booleano; o padrão é |
javac_supports_worker_multiplex_sandboxing
|
Booleano; o padrão é |
javac_supports_workers
|
Booleano; o padrão é |
javacopts
|
Lista de strings. O padrão é |
jspecify_implicit_deps
|
Rótulo; o padrão é |
jspecify_javacopts
|
Lista de strings. O padrão é |
jspecify_packages
|
Lista de rótulos. O padrão é |
jspecify_processor
|
Rótulo; o padrão é |
jspecify_processor_class
|
String; o padrão é |
jspecify_stubs
|
Lista de rótulos. O padrão é |
jvm_opts
|
Lista de strings. O padrão é |
misc
|
Lista de strings. O padrão é |
oneversion
|
Rótulo; o padrão é |
oneversion_allowlist
|
Rótulo; o padrão é |
oneversion_allowlist_for_tests
|
Rótulo; o padrão é |
oneversion_whitelist
|
Rótulo; o padrão é |
package_configuration
|
Lista de rótulos. O padrão é |
proguard_allowlister
|
Rótulo; o padrão é |
reduced_classpath_incompatible_processors
|
Lista de strings. O padrão é |
singlejar
|
Rótulo; o padrão é |
source_version
|
String; o padrão é |
target_version
|
String; o padrão é |
timezone_data
|
Rótulo; o padrão é |
tools
|
Lista de rótulos. O padrão é |
turbine_data
|
Lista de rótulos. O padrão é |
turbine_jvm_opts
|
Lista de strings. O padrão é |
xlint
|
Lista de strings. O padrão é |