Regras
- java_binary
- java_import
- java_library
- java_lite_proto_library
- java_proto_library
- java_test
- java_package_configuration
- java_plugin
- java_runtime
- java_toolchain
java_binary
Confira a origem da regrajava_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 ("arquivo jar"), além de um script de shell 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 de que o binário depende. Ao executar o script de shell do wrapper, qualquer variável de ambiente JAVABIN
não vazia terá precedência sobre a versão especificada pela sinalização --java_runtime_version
do Bazel.
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 flags configuráveis e variáveis de ambiente aceitas pelo wrapper.
Destinos de saída implícitos
name.jar
: um arquivo Java, contendo 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 (criado apenas se for explicitamente solicitado).Criar o destino
<name>_deploy.jar
para sua regra cria um arquivo jar autocontido com um manifesto que permite que ele seja executado com o comandojava -jar
ou com a opção--singlejar
do script de wrapper. É preferível usar o script de wrapper em vez dejava -jar
porque ele também transmite as sinalizações 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 classe que pesquisou o caminho de classe no 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 momento da execução.
Se o destino especificar um atributo launcher, em vez de ser um arquivo JAR normal, _deploy.jar será um binário nativo. Isso conterá a tela de início e todas as dependências nativas (C++) da regra, todas vinculadas 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 contendo o código executável e o Java. É possível executar o arquivo jar resultante diretamente como faria com qualquer binário nativo.
name_deploy-src.jar
: um arquivo que contém as origens coletadas do fechamento transitivo do destino. Eles corresponderão às classes nodeploy.jar
, exceto quando os jars não tiverem um jar de origem correspondente.
Um atributo deps
não é permitido em uma regra java_binary
sem
srcs
. Essa regra exige um
main_class
fornecido por
runtime_deps
.
O snippet de código abaixo 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 o destino. É recomendável usar o nome do arquivo de origem que é o ponto de entrada principal do aplicativo (menos a extensão). Por exemplo, se o ponto de entrada for chamado Main.java , o nome poderá ser Main .
|
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
|
resources
|
Lista de rótulos. O padrão é
Se os recursos forem especificados, eles serão agrupados no jar com os arquivos Os recursos podem ser arquivos de origem ou arquivos gerados. |
classpath_resources
|
Lista de rótulos. O padrão é
Uma lista de recursos que precisam estar localizados na raiz da árvore Java. A única finalidade
desse atributo é oferecer suporte a bibliotecas de terceiros que exigem que os recursos sejam
encontrados no caminho de classe como exatamente |
create_executable
|
Booleano, nonconfigurable. O padrão é java_single_jar .
|
deploy_env
|
Lista de rótulos. O padrão é java_binary que representam o ambiente de implantação do binário.
Defina esse atributo ao criar um plug-in que será carregado por outro
java_binary .A definição desse atributo exclui todas as dependências do caminho de classe do ambiente de execução (e o jar de implantação) desse binário compartilhadas entre o binário e os destinos especificados em deploy_env .
|
deploy_manifest_lines
|
Lista de strings. O padrão é META-INF/manifest.mf gerado para o
destino *_deploy.jar . O conteúdo desse atributo não está sujeito
à substituição "Make variables".
|
javacopts
|
Lista de strings. O padrão é Essas opções do compilador são passadas para javac após as opções do compilador global. |
jvm_flags
|
Lista de strings. O padrão é O script de wrapper de um binário Java inclui uma definição CLASSPATH (para encontrar todos os jars dependentes) e invoca o intérprete Java correto.
A linha de comando gerada pelo script de wrapper inclui o nome da
classe principal seguido por um Esse atributo não tem efeito nas saídas |
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 especificada como um valor para esse atributo.
Por padrão, o Bazel usa o inicializador normal do JDK (bin/java ou java.exe). A sinalização Bazel Observe que as dependências nativas (C++, SWIG, JNI) serão compiladas de forma diferente, dependendo se você estiver usando a tela de início do JDK ou outra tela de início:
Ao usar qualquer tela de início diferente da tela de início 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 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 momento da execução: ela pode ser compilada por essa regra (de |
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_jars
|
Lista de rótulos. O padrão é |
resource_strip_prefix
|
String. O padrão é
Se especificado, esse prefixo de caminho é removido de todos os arquivos no atributo
|
runtime_deps
|
Lista de rótulos. O padrão é deps comuns, elas vão aparecer no caminho de classe de execução, mas, diferentemente deles, não no caminho de classe do tempo de compilação. As dependências necessárias apenas no momento da execução precisam ser
listadas aqui. As ferramentas de análise de dependência precisam ignorar os destinos que aparecem em runtime_deps e deps .
|
stamp
|
Número inteiro. O padrão é
Binários carimbados não são recriados, a menos que as dependências deles mudem. |
use_launcher
|
Booleano. O padrão é Se o atributo for definido como falso, 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 de testes como um valor da propriedade de sistema bazel.test_suite .
Use 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
que são invocadas por outra regra (para configurar um banco de dados
antes de executar os testes, por exemplo). A regra AllTest
precisa ser declarada como java_binary , mas ainda
precisa usar o executor de testes como ponto de entrada principal.
O nome de uma classe do executor de testes pode ser substituído pelo atributo main_class .
|
java_import
Confira a origem da regrajava_import(name, deps, data, add_exports, add_opens, 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, 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 o destino. |
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 o package fornecidos.
Isso corresponde às sinalizações javac e JVM --add-exports=. |
add_opens
|
Lista de strings. O padrão é module ou a
package especificada.
Isso corresponde às sinalizações javac e JVM --add-opens=. |
constraints
|
Lista de strings. O padrão é |
exports
|
Lista de rótulos. O padrão é |
jars
|
Lista de rótulos (obrigatório) A lista de arquivos JAR fornecidos aos destinos Java que dependem do destino. |
neverlink
|
Booleano. O padrão é tools.jar para qualquer biblioteca executada em
um JDK padrão.
|
proguard_specs
|
Lista de rótulos. O padrão é android_binary , dependendo dessa biblioteca.
Os arquivos incluídos aqui só podem ter regras idempotentes, como -dontnote, -dontwarn, assumenosideeffects e regras que começam com -keep. Outras opções só podem aparecer em
proguard_specs de android_binary para garantir mesclagens não tautológicas.
|
runtime_deps
|
Lista de rótulos. O padrão é |
srcjar
|
Rótulo; o padrão é |
java_library
Confira a origem da regrajava_library(name, deps, srcs, data, resources, add_exports, add_opens, bootclasspath, compatible_with, deprecation, distribs, exec_compatible_with, exec_properties, exported_plugins, exports, features, javabuilder_jvm_flags, javacopts, licenses, neverlink, plugins, proguard_specs, resource_strip_prefix, restricted_to, runtime_deps, tags, target_compatible_with, testonly, toolchains, visibility)
Essa regra compila e vincula origens a 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 origens ("jar de origem").
Argumentos
Atributos | |
---|---|
name |
Nome (obrigatório) Um nome exclusivo para o destino. |
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 são ignorados, desde que haja pelo menos um arquivo do tipo descrito acima. Caso contrário, será gerado um erro.
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 arquivos gerados.
Se os recursos forem especificados, eles serão agrupados no jar com os arquivos
|
add_exports
|
Lista de strings. O padrão é module ou o package fornecidos.
Isso corresponde às sinalizações javac e JVM --add-exports=. |
add_opens
|
Lista de strings. O padrão é module ou a
package especificada.
Isso corresponde às sinalizações 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 dessa biblioteca.
A lista especificada de |
exports
|
Lista de rótulos. O padrão é
Listar regras aqui as disponibilizará para as regras pai, como se os pais dependessem
dessas regras explicitamente. Isso não é verdade para
Resumo: uma regra X poderá acessar o código em Y se houver um caminho de dependência entre elas que comece com uma aresta
Suponha que A depende de B e B depende de C. Nesse caso,
C é uma dependência transitiva de A, então mudar as origens de C e recriar A
recriará tudo corretamente. No entanto, A não poderá usar classes em C. Para permitir
isso, ou A precisa declarar C no O fechamento de bibliotecas exportadas está disponível para todas as regras mãe 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 normal. Considerando o exemplo anterior,
se B exportar C e também quiser usar C, também será necessário listá-lo em seu próprio
|
javabuilder_jvm_flags
|
Lista de strings. O padrão é |
javacopts
|
Lista de strings. O padrão é Essas opções do compilador são passadas para javac após as opções do compilador global. |
neverlink
|
Booleano. O padrão é tools.jar para qualquer
versão em execução em um JDK padrão.
Se a biblioteca de tempo de execução for diferente da biblioteca de compilação, é necessário garantir que ela seja diferente apenas em locais em que o JLS proíbe os compiladores para serem inline (e isso precisa ser mantido para todas as versões futuras do JLS). |
plugins
|
Lista de rótulos. O padrão é 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
|
Lista de rótulos. O padrão é android_binary , dependendo dessa biblioteca.
Os arquivos incluídos aqui só podem ter regras idempotentes, como -dontnote, -dontwarn, assumenosideeffects e regras que começam com -keep. Outras opções só podem aparecer em
proguard_specs de android_binary para garantir mesclagens não tautológicas.
|
resource_strip_prefix
|
String. O padrão é
Se especificado, esse prefixo de caminho é removido de todos os arquivos no atributo
|
runtime_deps
|
Lista de rótulos. O padrão é deps comuns, elas vão aparecer no caminho de classe de execução, mas diferentemente deles, não no caminho de classe do tempo de compilação. As dependências necessárias apenas no momento da execução precisam 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
Confira a origem da regrajava_lite_proto_library(name, deps, compatible_with, deprecation, distribs, exec_compatible_with, exec_properties, features, restricted_to, tags, target_compatible_with, testonly, toolchains, 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",
runtime_deps = [":foo"],
)
java_lite_proto_library(
name = "foo",
deps = [":bar"],
)
proto_library(
name = "bar",
)
Argumentos
Atributos | |
---|---|
name |
Nome (obrigatório) Um nome exclusivo para o destino. |
deps
|
Lista de rótulos. O padrão é proto_library
para as quais gerar código Java.
|
java_proto_library
Confira a origem da regrajava_proto_library(name, deps, compatible_with, deprecation, distribs, exec_compatible_with, exec_properties, features, licenses, restricted_to, tags, target_compatible_with, testonly, toolchains, 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",
runtime_deps = [":foo_java_proto"],
)
java_proto_library(
name = "foo_java_proto",
deps = [":foo_proto"],
)
proto_library(
name = "foo_proto",
)
Argumentos
Atributos | |
---|---|
name |
Nome (obrigatório) Um nome exclusivo para o destino. |
deps
|
Lista de rótulos. O padrão é proto_library
para as quais gerar código Java.
|
java_test
Confira a 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, distribs, env, env_inherit, exec_compatible_with, exec_properties, features, flaky, javacopts, jvm_flags, launcher, licenses, local, main_class, neverlink, 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 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ícitos
name.jar
: um arquivo Java.name_deploy.jar
: um arquivo Java adequado para implantação. Criada somente se explicitamente solicitada. Consulte a descrição da saídaname_deploy.jar
de java_binary para saber 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 o destino. |
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 arquivos gerados.
Se os recursos forem especificados, eles serão agrupados no jar com os arquivos
|
add_exports
|
Lista de strings. O padrão é module ou o package fornecidos.
Isso corresponde às sinalizações javac e JVM --add-exports=. |
add_opens
|
Lista de strings. O padrão é module ou a
package especificada.
Isso corresponde às sinalizações 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 localizados na raiz da árvore Java. A única finalidade
desse atributo é oferecer suporte a bibliotecas de terceiros que exigem que os recursos sejam
encontrados no caminho de classe como exatamente |
create_executable
|
Booleano. O padrão é java_single_jar .
|
deploy_manifest_lines
|
Lista de strings. O padrão é META-INF/manifest.mf gerado para o
destino *_deploy.jar . O conteúdo desse atributo não está sujeito à substituição "Make variables".
|
javacopts
|
Lista de strings. O padrão é Essas opções do compilador são passadas para javac após as opções do compilador global. |
jvm_flags
|
Lista de strings. O padrão é O script de wrapper de um binário Java inclui uma definição CLASSPATH (para encontrar todos os jars dependentes) e invoca o intérprete Java correto.
A linha de comando gerada pelo script de wrapper inclui o nome da
classe principal seguido por um Observe que esse atributo não tem efeito nas saídas
|
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 especificada como um valor para esse atributo.
Por padrão, o Bazel usa o inicializador normal do JDK (bin/java ou java.exe). A sinalização 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 tela de início:
Ao usar qualquer tela de início diferente da tela de início 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 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 momento da 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 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_strip_prefix
|
String. O padrão é
Se especificado, esse prefixo de caminho é removido de todos os arquivos no atributo
|
runtime_deps
|
Lista de rótulos. O padrão é deps comuns, elas vão aparecer no caminho de classe de execução, mas diferentemente deles, não no caminho de classe do tempo de compilação. As dependências necessárias apenas no momento da execução precisam ser
listadas aqui. As ferramentas de análise de dependência precisam ignorar os destinos que aparecem em
runtime_deps e deps .
|
stamp
|
Número inteiro. O padrão é
Binários carimbados não são recriados, a menos que as dependências deles 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 no lugar. Defina a sinalização
Esse atributo especifica o nome de uma classe Java a ser executada por
este teste. É raro configurar isso. Se esse argumento for omitido,
ele será inferido usando o
Para JUnit3, a classe de teste precisa ser uma subclasse de
Esse atributo permite que várias regras |
use_launcher
|
Booleano. O padrão é Se ele for definido como falso, 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 de testes como um valor da propriedade
de sistema bazel.test_suite .
Esse método pode ser usado 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
que são invocadas por outra regra (para configurar um banco de dados
antes de executar os testes, por exemplo). A regra AllTest
precisa ser declarada como java_binary , mas ainda
precisa usar o executor de testes como o ponto de entrada principal.
O nome de uma classe do executor de testes pode ser substituído pelo atributo main_class .
|
java_package_configuration
Confira a origem da regrajava_package_configuration(name, data, compatible_with, deprecation, distribs, exec_compatible_with, exec_properties, features, javacopts, output_licenses, packages, restricted_to, 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 o destino. |
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
ao qual a configuração será aplicada.
|
java_plugin
Confira a origem da regrajava_plugin(name, deps, srcs, data, resources, add_exports, add_opens, bootclasspath, compatible_with, deprecation, distribs, exec_compatible_with, exec_properties, features, generates_api, javabuilder_jvm_flags, javacopts, licenses, neverlink, output_licenses, plugins, processor_class, proguard_specs, resource_strip_prefix, restricted_to, tags, target_compatible_with, testonly, toolchains, visibility)
java_plugin
define plug-ins para o compilador Java executado pelo Bazel. No momento, o
único tipo de plug-in compatível são processadores de anotações. Uma regra java_library
ou
java_binary
pode executar plug-ins dependendo deles por meio do 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ícitos
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 |
Nome (obrigatório) Um nome exclusivo para o destino. |
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 são ignorados, desde que haja pelo menos um arquivo do tipo descrito acima. Caso contrário, será gerado um erro.
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 arquivos gerados.
Se os recursos forem especificados, eles serão agrupados no jar com os arquivos
|
add_exports
|
Lista de strings. O padrão é module ou o package fornecidos.
Isso corresponde às sinalizações javac e JVM --add-exports=. |
add_opens
|
Lista de strings. O padrão é module ou a
package especificada.
Isso corresponde às sinalizações 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 API, outras regras que dependem dela só poderão consultar o código gerado se as ações de compilação forem programadas após a regra de geração. Esse atributo instrui o Bazel a introduzir restrições de programação quando --java_header_compilation estiver ativado. AVISO: esse atributo afeta o desempenho do build. Use-o somente se necessário. |
javabuilder_jvm_flags
|
Lista de strings. O padrão é |
javacopts
|
Lista de strings. O padrão é Essas opções do compilador são passadas para javac após as opções do compilador global. |
neverlink
|
Booleano. O padrão é tools.jar para qualquer
versão em execução em um JDK padrão.
Se a biblioteca de tempo de execução for diferente da biblioteca de compilação, é necessário garantir que ela seja diferente apenas em locais em que o JLS proíbe os compiladores para serem inline (e isso precisa ser mantido para todas as versões futuras do 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 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. O padrão é |
proguard_specs
|
Lista de rótulos. O padrão é android_binary , dependendo dessa biblioteca.
Os arquivos incluídos aqui só podem ter regras idempotentes, como -dontnote, -dontwarn, assumenosideeffects e regras que começam com -keep. Outras opções só podem aparecer em
proguard_specs de android_binary para garantir mesclagens não tautológicas.
|
resource_strip_prefix
|
String. O padrão é
Se especificado, esse prefixo de caminho é removido de todos os arquivos no atributo
|
java_runtime
Confira a origem da regrajava_runtime(name, srcs, compatible_with, default_cds, deprecation, distribs, exec_compatible_with, exec_properties, features, hermetic_srcs, hermetic_static_libs, java, java_home, lib_ct_sym, lib_modules, output_licenses, restricted_to, tags, target_compatible_with, testonly, toolchains, version, visibility)
Especifica a configuração de um ambiente de execução do 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 o destino. |
srcs
|
Lista de rótulos. O padrão é |
default_cds
|
Rótulo; o padrão é java_runtime hermético. Quando o hermético
está ativado para um destino java_binary e se o destino não
fornece o próprio arquivo CDS especificando o
atributo classlist ,
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 com caminho terminando em
/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_toolchain
Confira a 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, distribs, exec_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_for_tests, oneversion_whitelist, package_configuration, 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. O conjunto de ferramentas a ser usado pode ser alterado por meio do argumento --java_dataset. Normalmente, não é recomendável escrever esse tipo de regra, a menos que você 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 o destino. |
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
|
null; default is |
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 é Esta ferramenta não tem suporte ao 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_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 é |