Regras
- java_binary
- java_import
- java_library
- java_test
- java_package_configuration
- java_plugin
- java_runtime
- java_toolchain
java_binary
Acessar a 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, distribs, env, exec_compatible_with, exec_properties, features, javacopts, jvm_flags, launcher, licenses, main_class, neverlink, output_licenses, 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 de shell wrapper com o mesmo nome da regra.
O script de shell do 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 de shell do wrapper, qualquer variável de ambiente
JAVABIN
que não esteja 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
//src/main/java/com/google/devtools/build/lib/bazel/rules/java/java_stub_template.txt
para conferir uma lista de flags configuráveis e variáveis de ambiente aceitas pelo wrapper.
Alvos de saída implícitos
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 (somente criado se solicitado explicitamente).A criação do destino
<name>_deploy.jar
para a 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. O uso do script wrapper é preferido aojava -jar
porque ele também transmite as flags da JVM e as opções para carregar bibliotecas nativas.O jar do deploy contém todas as classes que seriam encontradas por um carregador de classe 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. Eles são carregados automaticamente na JVM no momento da execução.
Se o destino especificar um atributo launcher, o _deploy.jar será um binário nativo, em vez de um arquivo JAR normal. Ele vai conter o iniciador e todas as dependências nativas (C++) da regra, todas vinculadas a um binário estático. Os bytes do arquivo JAR serão anexados a esse binário nativo, criando um blob binário único contendo 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 origens coletadas da interseção transitiva do destino. Eles vão corresponder à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 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
.
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 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 |
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 é necessá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 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 fornecido.
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 como exatamente |
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 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
|
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 variable".
|
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 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 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 especificado como um valor para esse atributo.
Por padrão, o Bazel usa o iniciador JDK normal (bin/java ou java.exe). A flag Suas dependências nativas (C++, SWIG, JNI) serão criadas de maneira diferente dependendo se você está usando o iniciador do JDK ou outro:
Ao usar qualquer iniciador que não seja o iniciador do JDK padrão, 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 momento da execução: ela pode ser compilada por essa regra (do |
neverlink
|
Booleano; o padrão é |
plugins
|
Lista de rótulos; o padrão é java_plugin especificado neste 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 será removido de todos os arquivos no atributo
|
runtime_deps
|
Lista de rótulos; o padrão é deps comum, elas vão aparecer no caminho de classe de execução, mas, ao contrário
delas, não no caminho de classe de tempo de compilação. As dependências necessárias apenas no tempo de 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
|
Inteiro; padrão é
Os binários carimbados não são reconstruídos, a menos que as dependências mudem. |
use_launcher
|
Booleano; o padrão é Se esse atributo for definido como falso, o atributo
launcher e a flag
|
use_testrunner
|
Booleano; o padrão é com.google.testing.junit.runner.BazelTestRunner , por padrão) 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 do sistema
bazel.test_suite .
É possível usar isso para substituir o comportamento padrão, que é usar o test runner para regras java_test ,
e não 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 um java_binary , mas ainda precisa
usar o executor de testes como ponto de entrada principal.
O nome de uma classe de executor de teste pode ser substituído pelo atributo main_class .
|
java_import
Acessar 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 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 fornecido.
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 rótulos; 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 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
Acessar 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 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 são ignorados, desde que haja pelo menos um arquivo do tipo descrito acima. Caso contrário, um erro será gerado.
Esse argumento é quase sempre necessá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 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 fornecido.
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) para exportação para bibliotecas que dependem diretamente dessa biblioteca.
A lista especificada de |
exports
|
Lista de rótulos; o padrão é
Listar regras aqui as disponibiliza para as regras mãe, como se elas dependessem explicitamente
delas. 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 B dependa de C. Nesse caso,
C é uma dependência transitiva de A. Portanto, mudar as origens de C e recriar A
vai recriar tudo corretamente. No entanto, A não poderá usar classes em C. Para permitir
isso, A precisa declarar C no O fechamento das bibliotecas exportadas está disponível para todas as regras principais diretas. Considere 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 exportaram algumas bibliotecas, C' e D', respectivamente, A só pode acessar C', mas não D'.
Importante: uma regra exportada não é uma dependência regular. No exemplo anterior,
se B exporta C e quer usar C, ele também 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.
Se a biblioteca de tempo de execução for diferente da biblioteca de compilação, ela vai ser diferente apenas nos locais em que o JLS proíbe que os compiladores sejam 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 neste 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 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 de android_binary para garantir mesclagens 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 comum, elas vão aparecer no caminho de classe de execução, mas, ao contrário
delas, não no caminho de classe de tempo de compilação. As dependências necessárias apenas no tempo de 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_test
Acessar 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 teste é invocado em vez da classe principal que está sendo compilada.
Alvos de saída implícitos
name.jar
: um arquivo Java.name_deploy.jar
: um arquivo Java adequado para implantação. (Somente criado 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
aceita 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 é necessá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 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 fornecido.
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 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 variable".
|
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 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 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 especificado como um valor para esse atributo.
Por padrão, o Bazel usa o iniciador JDK normal (bin/java ou java.exe). A flag Suas dependências nativas (C++, SWIG, JNI) serão criadas de maneira diferente dependendo se você está usando o iniciador do JDK ou outro:
Ao usar qualquer iniciador que não seja o iniciador do JDK padrão, 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 momento da execução: ela pode ser compilada por essa regra (do |
neverlink
|
Booleano; o padrão é |
plugins
|
Lista de rótulos; o padrão é java_plugin especificado neste 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 será removido de todos os arquivos no atributo
|
runtime_deps
|
Lista de rótulos; o padrão é deps comum, elas vão aparecer no caminho de classe de execução, mas, ao contrário
delas, não no caminho de classe de tempo de compilação. As dependências necessárias apenas no tempo de 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
|
Inteiro; padrão é
Os binários carimbados não são reconstruídos, 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
No 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 falso, o atributo
launcher e a flag
|
use_testrunner
|
Booleano; o padrão é com.google.testing.junit.runner.BazelTestRunner , por padrão) 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 do sistema
bazel.test_suite .
É possível usar isso para substituir o comportamento padrão, que é usar o test runner para regras java_test ,
e não 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 um java_binary , mas ainda precisa
usar o executor de testes como ponto de entrada principal.
O nome de uma classe de executor de teste pode ser substituído pelo atributo main_class .
|
java_package_configuration
Acessar a origem da regrajava_package_configuration(name, data, compatible_with, deprecation, distribs, exec_compatible_with, exec_properties, features, javacopts, output_licenses, 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 precisa ser aplicada.
|
system
|
Rótulo: o padrão é |
java_plugin
Acessar 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. Os
únicos tipos de plug-ins compatíveis são 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 automaticamente plug-ins para bibliotecas que
dependem diretamente dele usando
exported_plugins
.
Alvos 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 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 são ignorados, desde que haja pelo menos um arquivo do tipo descrito acima. Caso contrário, um erro será gerado.
Esse argumento é quase sempre necessá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 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 fornecido.
Isso corresponde às flags javac e JVM --add-opens=. |
bootclasspath
|
Rótulo: o padrão é |
generates_api
|
Booleano; o padrão é Se uma regra usa um processador de anotação que gera a API, outras regras que dependem dela só podem se referir ao 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 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.
Se a biblioteca de tempo de execução for diferente da biblioteca de compilação, ela vai ser diferente apenas nos locais em que o JLS proíbe que os compiladores sejam 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 neste 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 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 de android_binary para garantir mesclagens 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
Acessar 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 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 a hermeticidade
é ativada 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
|
Inteiro; padrão é Runtime.version().feature() .
|
java_toolchain
Acessar 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, 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. É possível mudar qual toolchain será usado usando o argumento --java_toolchain. Normalmente, não é necessário 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 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
|
null; 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 oferece 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
|
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 é |