규칙
- java_binary
- java_import
- java_library
- java_test
- java_package_configuration
- java_plugin
- java_runtime
- java_single_jar
- java_toolchain
java_binary
규칙 소스 보기java_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)
Java 보관 파일 ('jar 파일')과 규칙과 이름이 같은 래퍼 셸 스크립트를 빌드합니다.
래퍼 셸 스크립트는 바이너리가 종속된 각 라이브러리의 jar 파일을 비롯한 클래스 경로를 사용합니다. 래퍼 셸 스크립트를 실행할 때 비어 있지 않은 JAVABIN
환경 변수가 Bazel의 --java_runtime_version
플래그를 통해 지정된 버전보다 우선합니다.
래퍼 스크립트는 여러 고유한 플래그를 허용합니다. 래퍼에서 허용하는 구성 가능한 플래그와 환경 변수의 목록은 java_stub_template.txt
를 참고하세요.
암시적 출력 타겟
name.jar
: 클래스 파일과 바이너리의 직접 종속 항목에 해당하는 기타 리소스가 포함된 Java 보관 파일입니다.name-src.jar
: 소스 ('소스 jar')가 포함된 보관 파일입니다.name_deploy.jar
: 배포에 적합한 Java 보관 파일입니다 (명시적으로 요청된 경우에만 빌드됨).규칙의
<name>_deploy.jar
타겟을 빌드하면java -jar
명령어 또는 래퍼 스크립트의--singlejar
옵션으로 실행할 수 있는 매니페스트가 포함된 자체 포함 jar 파일이 생성됩니다. 래퍼 스크립트를 사용하는 것이java -jar
보다 좋습니다. 래퍼 스크립트는 JVM 플래그와 네이티브 라이브러리를 로드하는 옵션도 전달하기 때문입니다.배포 jar에는 바이너리의 래퍼 스크립트에서 클래스 경로를 처음부터 끝까지 검색한 클래스 로더가 찾을 수 있는 모든 클래스가 포함되어 있습니다. 또한 종속 항목에 필요한 네이티브 라이브러리가 포함되어 있습니다. 이러한 파일은 런타임에 JVM에 자동으로 로드됩니다.
타겟이 런처 속성을 지정하면 _deploy.jar는 일반 JAR 파일이 아닌 네이티브 바이너리가 됩니다. 여기에는 런처와 규칙의 모든 네이티브 (C++) 종속 항목이 포함되며 모두 정적 바이너리에 연결됩니다. 실제 jar 파일의 바이트가 네이티브 바이너리에 추가되어 실행 파일과 Java 코드가 모두 포함된 단일 바이너리 blob이 생성됩니다. 결과 jar 파일을 네이티브 바이너리를 실행하는 것처럼 직접 실행할 수 있습니다.
name_deploy-src.jar
: 타겟의 전이적 폐쇄에서 수집된 소스가 포함된 보관 파일입니다. 이러한 클래스는 jar에 일치하는 소스 jar가 없는 경우를 제외하고deploy.jar
의 클래스와 일치합니다.
애플리케이션의 기본 진입점인 소스 파일의 이름 (확장자 제외)을 사용하는 것이 좋습니다. 예를 들어 진입점의 이름이 Main.java
이면 이름은 Main
일 수 있습니다.
deps
속성은 srcs
없이 java_binary
규칙에서 허용되지 않습니다. 이러한 규칙에는 runtime_deps
에서 제공하는 main_class
이 필요합니다.
다음 코드 스니펫은 일반적인 실수를 보여줍니다.
java_binary(
name = "DontDoThis",
srcs = [
... ,
"GeneratedJavaFile.java"
, # a generated .java file
],
deps = [":generating_rule",
], # rule that generates that file
)
대신 다음 단계를 따르세요.
java_binary(
name = "DoThisInstead",
srcs = [
... ,
":generating_rule",
],
)
인수
속성 | |
---|---|
name |
이름: 필수 이 타겟의 고유한 이름입니다. |
deps
|
라벨 목록입니다. 기본값은 deps 에 관한 일반적인 의견은 대부분의 빌드 규칙에서 정의하는 일반적인 속성을 참고하세요.
|
srcs
|
라벨 목록입니다. 기본값은
규칙: 규칙 (일반적으로
이 인수는 |
data
|
라벨 목록입니다. 기본값은 data 에 관한 일반적인 의견은 대부분의 빌드 규칙에서 정의하는 일반적인 속성을 참고하세요.
|
resources
|
라벨 목록입니다. 기본값은 리소스는 소스 파일 또는 생성된 파일일 수 있습니다.
리소스를 지정하면 컴파일에서 생성된 일반적인 |
add_exports
|
문자열 목록입니다. 기본값은 module 또는 package 에 액세스하도록 허용합니다.
이는 javac 및 JVM --add-exports= 플래그에 해당합니다. |
add_opens
|
문자열 목록입니다. 기본값은 module 또는 package 에 리플렉션 방식으로 액세스하도록 허용합니다.
이는 javac 및 JVM --add-opens= 플래그에 해당합니다. |
bootclasspath
|
라벨: 기본값은 |
classpath_resources
|
라벨 목록입니다. 기본값은
Java 트리의 루트에 있어야 하는 리소스 목록입니다. 이 속성의 유일한 목적은 리소스가 클래스 경로에서 정확히 |
create_executable
|
불리언, 기본값은 java_single_jar 을 사용하세요.
|
deploy_env
|
라벨 목록입니다. 기본값은 java_binary 타겟 목록입니다.
다른 java_binary 에 의해 로드될 플러그인을 빌드할 때 이 속성을 설정합니다.이 속성을 설정하면 이 바이너리와 deploy_env 에 지정된 타겟 간에 공유되는 이 바이너리의 런타임 클래스 경로 (및 배포 jar)에서 모든 종속 항목이 제외됩니다.
|
deploy_manifest_lines
|
문자열 목록입니다. 기본값은 *_deploy.jar 타겟에 대해 생성된 META-INF/manifest.mf 파일에 추가할 줄 목록입니다. 이 속성의 내용은 '변수 만들기' 대체가 적용되지 않습니다.
|
javacopts
|
문자열 목록입니다. 기본값은 이러한 컴파일러 옵션은 전역 컴파일러 옵션 뒤에 javac에 전달됩니다. |
jvm_flags
|
문자열 목록입니다. 기본값은 Java 바이너리의 래퍼 스크립트에는 CLASSPATH 정의(모든 종속 jar를 찾음)가 포함되어 있으며 올바른 Java 인터프리터를 호출합니다.
래퍼 스크립트에서 생성된 명령줄에는 기본 클래스 이름과 이 속성은 |
launcher
|
라벨: 기본값은 bin/java 프로그램 대신 Java 프로그램을 실행하는 데 사용할 바이너리를 지정합니다.
타겟은 cc_binary 이어야 합니다.
Java 호출 API를 구현하는 cc_binary 는 이 속성의 값으로 지정할 수 있습니다.
기본적으로 Bazel은 일반 JDK 런처 (bin/java 또는 java.exe)를 사용합니다. 관련 JDK 런처를 사용하는지 아니면 다른 런처를 사용하는지에 따라 네이티브 (C++, SWIG, JNI) 종속 항목이 다르게 빌드됩니다.
기본 JDK 런처가 아닌 다른 런처를 사용하면 |
main_class
|
문자열, 기본값은 main() 메서드가 있는 클래스의 이름입니다.
규칙에서 이 옵션을 사용하는 경우 srcs=[...] 목록이 필요하지 않습니다.
따라서 이 속성을 사용하면 하나 이상의 main() 메서드가 이미 포함된 Java 라이브러리에서 실행 파일을 만들 수 있습니다.
이 속성의 값은 소스 파일이 아닌 클래스 이름입니다. 클래스는 런타임에 사용할 수 있어야 합니다. 이 규칙 ( |
neverlink
|
불리언, 기본값은 |
plugins
|
라벨 목록입니다. 기본값은 java_plugin 는 이 규칙이 빌드될 때마다 실행됩니다. 라이브러리는 exported_plugins 를 사용하는 종속 항목에서 플러그인을 상속받을 수도 있습니다. 플러그인에서 생성된 리소스는 이 규칙의 결과 jar에 포함됩니다.
|
resource_strip_prefix
|
문자열, 기본값은
지정된 경우 이 경로 접두사가 |
runtime_deps
|
라벨 목록입니다. 기본값은 deps 와 마찬가지로 런타임 클래스 경로에 표시되지만 컴파일 시간 클래스 경로에는 표시되지 않습니다. 런타임에만 필요한 종속 항목은 여기에 나열해야 합니다. 종속 항목 분석 도구는 runtime_deps 와 deps 에 모두 표시되는 타겟을 무시해야 합니다.
|
stamp
|
정수이며 기본값은
스탬프가 찍힌 바이너리는 종속 항목이 변경되지 않는 한 다시 빌드되지 않습니다. |
use_launcher
|
불리언, 기본값은 이 속성이 false로 설정되면 launcher 속성과 관련 |
use_testrunner
|
불리언, 기본값은 com.google.testing.junit.runner.BazelTestRunner ) 클래스를 Java 프로그램의 기본 진입점으로 사용하고 테스트 클래스를 bazel.test_suite 시스템 속성의 값으로 테스트 실행기에 제공합니다.
이를 사용하여 java_test 규칙에 테스트 러너를 사용하고 java_binary 규칙에는 사용하지 않는 기본 동작을 재정의할 수 있습니다. 이 작업을 수행하지 않는 것이 좋습니다. 한 가지 용도는 다른 규칙에 의해 호출되는 AllTest 규칙입니다 (예: 테스트를 실행하기 전에 데이터베이스를 설정). AllTest 규칙은 java_binary 로 선언해야 하지만 테스트 실행기를 기본 진입점으로 계속 사용해야 합니다.
테스트 러너 클래스의 이름은 main_class 속성으로 재정의할 수 있습니다.
|
java_import
규칙 소스 보기java_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)
이 규칙은 미리 컴파일된 .jar
파일을 java_library
및 java_binary
규칙의 라이브러리로 사용할 수 있도록 허용합니다.
예
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",
],
)
인수
속성 | |
---|---|
name |
이름: 필수 이 타겟의 고유한 이름입니다. |
deps
|
라벨 목록입니다. 기본값은 |
data
|
라벨 목록입니다. 기본값은 |
add_exports
|
문자열 목록입니다. 기본값은 module 또는 package 에 액세스하도록 허용합니다.
이는 javac 및 JVM --add-exports= 플래그에 해당합니다. |
add_opens
|
문자열 목록입니다. 기본값은 module 또는 package 에 리플렉션 방식으로 액세스하도록 허용합니다.
이는 javac 및 JVM --add-opens= 플래그에 해당합니다. |
constraints
|
문자열 목록입니다. 기본값은 |
exports
|
라벨 목록입니다. 기본값은 |
jars
|
라벨 목록입니다. 필수입니다. 이 타겟에 종속된 Java 타겟에 제공되는 JAR 파일 목록입니다. |
neverlink
|
불리언, 기본값은 tools.jar 가 있습니다.
|
proguard_specs
|
라벨 목록입니다. 기본값은 android_binary 타겟에 추가됩니다.
여기에 포함된 파일에는 -dontnote, -dontwarn, assumenosideeffects, -keep으로 시작하는 규칙 등 멱등원 규칙만 있어야 합니다. 다른 옵션은 android_binary 의 proguard_specs에만 표시되어야 합니다. 그래야 동어 반복이 아닌 병합이 보장됩니다.
|
runtime_deps
|
라벨 목록입니다. 기본값은 |
srcjar
|
라벨: 기본값은 |
java_library
규칙 소스 보기java_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)
이 규칙은 소스를 컴파일하고 .jar
파일에 연결합니다.
암시적 출력
libname.jar
: 클래스 파일이 포함된 Java 보관 파일입니다.libname-src.jar
: 소스 ('소스 jar')가 포함된 보관 파일입니다.
인수
속성 | |
---|---|
name |
이름: 필수 이 타겟의 고유한 이름입니다. |
deps
|
라벨 목록입니다. 기본값은 deps 에 관한 일반적인 의견은 대부분의 빌드 규칙에서 정의하는 일반적인 속성을 참고하세요.
반면 |
srcs
|
라벨 목록입니다. 기본값은
규칙: 규칙 (일반적으로
위에 설명된 파일 형식의 파일이 하나 이상 있는 한 다른 모든 파일은 무시됩니다. 그렇지 않으면 오류가 발생합니다.
|
data
|
라벨 목록입니다. 기본값은 data 에 관한 일반적인 의견은 대부분의 빌드 규칙에서 정의하는 일반적인 속성을 참고하세요.
|
resources
|
라벨 목록입니다. 기본값은 리소스는 소스 파일 또는 생성된 파일일 수 있습니다.
리소스를 지정하면 컴파일에서 생성된 일반적인 |
add_exports
|
문자열 목록입니다. 기본값은 module 또는 package 에 액세스하도록 허용합니다.
이는 javac 및 JVM --add-exports= 플래그에 해당합니다. |
add_opens
|
문자열 목록입니다. 기본값은 module 또는 package 에 리플렉션 방식으로 액세스하도록 허용합니다.
이는 javac 및 JVM --add-opens= 플래그에 해당합니다. |
bootclasspath
|
라벨: 기본값은 |
exported_plugins
|
라벨 목록입니다. 기본값은 java_plugin 목록 (예: 주석 프로세서)입니다.
지정된 |
exports
|
라벨 목록입니다. 기본값은
여기에 규칙을 나열하면 상위 규칙이 이러한 규칙에 명시적으로 종속된 것처럼 상위 규칙에서 사용할 수 있습니다. 일반 (내보내지 않은)
요약:
A가 B에 종속되고 B가 C에 종속된다고 가정해 보겠습니다. 이 경우 C는 A의 전이 종속 항목이므로 C의 소스를 변경하고 A를 다시 빌드하면 모든 항목이 올바르게 다시 빌드됩니다. 하지만 A는 C의 클래스를 사용할 수 없습니다. 이를 허용하려면 A가 내보낸 라이브러리의 종료는 모든 직접 상위 규칙에 사용할 수 있습니다. 약간 다른 예를 들어 보겠습니다. A는 B에 종속되고 B는 C와 D에 종속되며 D가 아닌 C를 내보냅니다. 이제 A는 C에 액세스할 수 있지만 D에는 액세스할 수 없습니다. 이제 C와 D가 각각 C'와 D' 라이브러리를 내보낸 경우 A는 C'에만 액세스할 수 있고 D'에는 액세스할 수 없습니다.
중요: 내보낸 규칙은 일반 종속 항목이 아닙니다. 이전 예시를 계속 사용하면 B가 C를 내보내고 C도 사용하려면 자체 |
javabuilder_jvm_flags
|
문자열 목록입니다. 기본값은 |
javacopts
|
문자열 목록입니다. 기본값은 이러한 컴파일러 옵션은 전역 컴파일러 옵션 뒤에 javac에 전달됩니다. |
neverlink
|
불리언, 기본값은 tools.jar 가 있습니다.
런타임 라이브러리가 컴파일 라이브러리와 다른 경우 JLS에서 컴파일러가 인라인하는 것을 금지하는 위치에서만 달라야 합니다 (이는 모든 향후 JLS 버전에서 유지되어야 함). |
plugins
|
라벨 목록입니다. 기본값은 java_plugin 는 이 규칙이 빌드될 때마다 실행됩니다. 라이브러리는 exported_plugins 를 사용하는 종속 항목에서 플러그인을 상속받을 수도 있습니다. 플러그인에서 생성된 리소스는 이 규칙의 결과 jar에 포함됩니다.
|
proguard_specs
|
라벨 목록입니다. 기본값은 android_binary 타겟에 추가됩니다.
여기에 포함된 파일에는 -dontnote, -dontwarn, assumenosideeffects, -keep으로 시작하는 규칙 등 멱등원 규칙만 있어야 합니다. 다른 옵션은 android_binary 의 proguard_specs에만 표시되어야 합니다. 그래야 동어 반복이 아닌 병합이 보장됩니다.
|
resource_strip_prefix
|
문자열, 기본값은
지정된 경우 이 경로 접두사가 |
runtime_deps
|
라벨 목록입니다. 기본값은 deps 와 마찬가지로 런타임 클래스 경로에 표시되지만 컴파일 시간 클래스 경로에는 표시되지 않습니다. 런타임에만 필요한 종속 항목은 여기에 나열해야 합니다. 종속 항목 분석 도구는 runtime_deps 와 deps 에 모두 표시되는 타겟을 무시해야 합니다.
|
java_test
규칙 소스 보기java_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)
java_test()
규칙은 Java 테스트를 컴파일합니다. 테스트는 테스트 코드 주변의 바이너리 래퍼입니다. 기본 클래스가 컴파일되는 대신 테스트 러너의 기본 메서드가 호출됩니다.
암시적 출력 타겟
name.jar
: Java 보관 파일입니다.name_deploy.jar
: 배포에 적합한 Java 보관 파일입니다. (명시적으로 요청된 경우에만 빌드됨) 자세한 내용은 java_binary의name_deploy.jar
출력을 참고하세요.
java_binary()
인수 섹션을 참고하세요. 이 규칙은 모든 테스트 규칙 (*_test)에 공통적인 속성도 모두 지원합니다.
예
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",
],
)
인수
속성 | |
---|---|
name |
이름: 필수 이 타겟의 고유한 이름입니다. |
deps
|
라벨 목록입니다. 기본값은 deps 에 관한 일반적인 의견은 대부분의 빌드 규칙에서 정의하는 일반적인 속성을 참고하세요.
|
srcs
|
라벨 목록입니다. 기본값은
규칙: 규칙 (일반적으로
이 인수는 |
data
|
라벨 목록입니다. 기본값은 data 에 관한 일반적인 의견은 대부분의 빌드 규칙에서 정의하는 일반적인 속성을 참고하세요.
|
resources
|
라벨 목록입니다. 기본값은 리소스는 소스 파일 또는 생성된 파일일 수 있습니다.
리소스를 지정하면 컴파일에서 생성된 일반적인 |
add_exports
|
문자열 목록입니다. 기본값은 module 또는 package 에 액세스하도록 허용합니다.
이는 javac 및 JVM --add-exports= 플래그에 해당합니다. |
add_opens
|
문자열 목록입니다. 기본값은 module 또는 package 에 리플렉션 방식으로 액세스하도록 허용합니다.
이는 javac 및 JVM --add-opens= 플래그에 해당합니다. |
bootclasspath
|
라벨: 기본값은 |
classpath_resources
|
라벨 목록입니다. 기본값은
Java 트리의 루트에 있어야 하는 리소스 목록입니다. 이 속성의 유일한 목적은 리소스가 클래스 경로에서 정확히 |
create_executable
|
불리언, 기본값은 java_single_jar 을 사용하세요.
|
deploy_manifest_lines
|
문자열 목록입니다. 기본값은 *_deploy.jar 타겟에 대해 생성된 META-INF/manifest.mf 파일에 추가할 줄 목록입니다. 이 속성의 내용은 '변수 만들기' 대체가 적용되지 않습니다.
|
javacopts
|
문자열 목록입니다. 기본값은 이러한 컴파일러 옵션은 전역 컴파일러 옵션 뒤에 javac에 전달됩니다. |
jvm_flags
|
문자열 목록입니다. 기본값은 Java 바이너리의 래퍼 스크립트에는 CLASSPATH 정의(모든 종속 jar를 찾음)가 포함되어 있으며 올바른 Java 인터프리터를 호출합니다.
래퍼 스크립트에서 생성된 명령줄에는 기본 클래스 이름과 이 속성은 |
launcher
|
라벨: 기본값은 bin/java 프로그램 대신 Java 프로그램을 실행하는 데 사용할 바이너리를 지정합니다.
타겟은 cc_binary 이어야 합니다.
Java 호출 API를 구현하는 cc_binary 는 이 속성의 값으로 지정할 수 있습니다.
기본적으로 Bazel은 일반 JDK 런처 (bin/java 또는 java.exe)를 사용합니다. 관련 JDK 런처를 사용하는지 아니면 다른 런처를 사용하는지에 따라 네이티브 (C++, SWIG, JNI) 종속 항목이 다르게 빌드됩니다.
기본 JDK 런처가 아닌 다른 런처를 사용하면 |
main_class
|
문자열, 기본값은 main() 메서드가 있는 클래스의 이름입니다.
규칙에서 이 옵션을 사용하는 경우 srcs=[...] 목록이 필요하지 않습니다.
따라서 이 속성을 사용하면 하나 이상의 main() 메서드가 이미 포함된 Java 라이브러리에서 실행 파일을 만들 수 있습니다.
이 속성의 값은 소스 파일이 아닌 클래스 이름입니다. 클래스는 런타임에 사용할 수 있어야 합니다. 이 규칙 ( |
neverlink
|
불리언, 기본값은 |
plugins
|
라벨 목록입니다. 기본값은 java_plugin 는 이 규칙이 빌드될 때마다 실행됩니다. 라이브러리는 exported_plugins 를 사용하는 종속 항목에서 플러그인을 상속받을 수도 있습니다. 플러그인에서 생성된 리소스는 이 규칙의 결과 jar에 포함됩니다.
|
resource_strip_prefix
|
문자열, 기본값은
지정된 경우 이 경로 접두사가 |
runtime_deps
|
라벨 목록입니다. 기본값은 deps 와 마찬가지로 런타임 클래스 경로에 표시되지만 컴파일 시간 클래스 경로에는 표시되지 않습니다. 런타임에만 필요한 종속 항목은 여기에 나열해야 합니다. 종속 항목 분석 도구는 runtime_deps 와 deps 에 모두 표시되는 타겟을 무시해야 합니다.
|
stamp
|
정수이며 기본값은
스탬프가 찍힌 바이너리는 종속 항목이 변경되지 않는 한 다시 빌드되지 않습니다. |
test_class
|
문자열, 기본값은
기본적으로 이 인수가 정의되지 않으면 기존 모드가 사용되고 테스트 인수가 대신 사용됩니다. 첫 번째 인수로 대체되지 않도록
이 속성은 이 테스트에서 실행할 Java 클래스의 이름을 지정합니다. 이 값을 설정해야 하는 경우는 드뭅니다. 이 인수를 생략하면 타겟의
JUnit3의 경우 테스트 클래스가
이 속성을 사용하면 여러 |
use_launcher
|
불리언, 기본값은 이 속성이 false로 설정되면 launcher 속성과 관련 |
use_testrunner
|
불리언, 기본값은 com.google.testing.junit.runner.BazelTestRunner ) 클래스를 Java 프로그램의 기본 진입점으로 사용하고 테스트 클래스를 bazel.test_suite 시스템 속성의 값으로 테스트 실행기에 제공합니다.
이를 사용하여 java_test 규칙에 테스트 러너를 사용하고 java_binary 규칙에는 사용하지 않는 기본 동작을 재정의할 수 있습니다. 이 작업을 수행하지 않는 것이 좋습니다. 한 가지 용도는 다른 규칙에 의해 호출되는 AllTest 규칙입니다 (예: 테스트를 실행하기 전에 데이터베이스를 설정). AllTest 규칙은 java_binary 로 선언해야 하지만 테스트 실행기를 기본 진입점으로 계속 사용해야 합니다.
테스트 러너 클래스의 이름은 main_class 속성으로 재정의할 수 있습니다.
|
java_package_configuration
규칙 소스 보기java_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)
패키지 집합에 적용할 구성입니다.
구성을 java_toolchain.javacopts
에 추가할 수 있습니다.
예:
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",
]
)
인수
속성 | |
---|---|
name |
이름: 필수 이 타겟의 고유한 이름입니다. |
data
|
라벨 목록입니다. 기본값은 |
javacopts
|
문자열 목록입니다. 기본값은 |
output_licenses
|
문자열 목록입니다. 기본값은 |
packages
|
라벨 목록입니다. 기본값은 package_group 집합입니다.
|
system
|
라벨: 기본값은 |
java_plugin
규칙 소스 보기java_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)
java_plugin
은 Bazel에서 실행하는 Java 컴파일러의 플러그인을 정의합니다. 지원되는 유일한 종류의 플러그인은 주석 프로세서입니다. java_library
또는 java_binary
규칙은 plugins
속성을 통해 플러그인에 의존하여 플러그인을 실행할 수 있습니다. java_library
는 exported_plugins
를 사용하여 직접 종속된 라이브러리에 플러그인을 자동으로 내보낼 수도 있습니다.
암시적 출력 타겟
libname.jar
: Java 보관 파일입니다.
인수는 java_library()의 하위 집합이며 의미 체계가 동일합니다. 단, processor_class
및 generates_api
인수가 추가되었습니다.
인수
속성 | |
---|---|
name |
이름: 필수 이 타겟의 고유한 이름입니다. |
deps
|
라벨 목록입니다. 기본값은 deps 에 관한 일반적인 의견은 대부분의 빌드 규칙에서 정의하는 일반적인 속성을 참고하세요.
반면 |
srcs
|
라벨 목록입니다. 기본값은
규칙: 규칙 (일반적으로
위에 설명된 파일 형식의 파일이 하나 이상 있는 한 다른 모든 파일은 무시됩니다. 그렇지 않으면 오류가 발생합니다.
|
data
|
라벨 목록입니다. 기본값은 data 에 관한 일반적인 의견은 대부분의 빌드 규칙에서 정의하는 일반적인 속성을 참고하세요.
|
resources
|
라벨 목록입니다. 기본값은 리소스는 소스 파일 또는 생성된 파일일 수 있습니다.
리소스를 지정하면 컴파일에서 생성된 일반적인 |
add_exports
|
문자열 목록입니다. 기본값은 module 또는 package 에 액세스하도록 허용합니다.
이는 javac 및 JVM --add-exports= 플래그에 해당합니다. |
add_opens
|
문자열 목록입니다. 기본값은 module 또는 package 에 리플렉션 방식으로 액세스하도록 허용합니다.
이는 javac 및 JVM --add-opens= 플래그에 해당합니다. |
bootclasspath
|
라벨: 기본값은 |
generates_api
|
불리언, 기본값은 규칙이 API 생성 주석 프로세서를 사용하는 경우 이에 종속된 다른 규칙은 생성 규칙 후에 컴파일 작업이 예약된 경우에만 생성된 코드를 참조할 수 있습니다. 이 속성은 --java_header_compilation이 사용 설정된 경우 Bazel이 스케줄링 제약 조건을 도입하도록 지시합니다. 경고: 이 속성은 빌드 성능에 영향을 미치므로 필요한 경우에만 사용하세요. |
javabuilder_jvm_flags
|
문자열 목록입니다. 기본값은 |
javacopts
|
문자열 목록입니다. 기본값은 이러한 컴파일러 옵션은 전역 컴파일러 옵션 뒤에 javac에 전달됩니다. |
neverlink
|
불리언, 기본값은 tools.jar 가 있습니다.
런타임 라이브러리가 컴파일 라이브러리와 다른 경우 JLS에서 컴파일러가 인라인하는 것을 금지하는 위치에서만 달라야 합니다 (이는 모든 향후 JLS 버전에서 유지되어야 함). |
output_licenses
|
문자열 목록입니다. 기본값은 |
plugins
|
라벨 목록입니다. 기본값은 java_plugin 는 이 규칙이 빌드될 때마다 실행됩니다. 라이브러리는 exported_plugins 를 사용하는 종속 항목에서 플러그인을 상속받을 수도 있습니다. 플러그인에서 생성된 리소스는 이 규칙의 결과 jar에 포함됩니다.
|
processor_class
|
문자열, 기본값은 |
proguard_specs
|
라벨 목록입니다. 기본값은 android_binary 타겟에 추가됩니다.
여기에 포함된 파일에는 -dontnote, -dontwarn, assumenosideeffects, -keep으로 시작하는 규칙 등 멱등원 규칙만 있어야 합니다. 다른 옵션은 android_binary 의 proguard_specs에만 표시되어야 합니다. 그래야 동어 반복이 아닌 병합이 보장됩니다.
|
resource_strip_prefix
|
문자열, 기본값은
지정된 경우 이 경로 접두사가 |
java_runtime
규칙 소스 보기java_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)
Java 런타임의 구성을 지정합니다.
예:
java_runtime(
name = "jdk-9-ea+153",
srcs = glob(["jdk9-ea+153/**"]),
java_home = "jdk9-ea+153",
)
인수
속성 | |
---|---|
name |
이름: 필수 이 타겟의 고유한 이름입니다. |
srcs
|
라벨 목록입니다. 기본값은 |
default_cds
|
라벨: 기본값은 java_runtime 의 기본 CDS 보관 파일 java_binary 타겟에 hermetic이 사용 설정되면 java_runtime 기본 CDS가 hermetic 배포 JAR에 패키징됩니다.
|
hermetic_srcs
|
라벨 목록입니다. 기본값은 |
hermetic_static_libs
|
라벨 목록입니다. 기본값은 |
java
|
라벨: 기본값은 |
java_home
|
문자열, 기본값은 srcs 및 java 속성은 비워 두어야 합니다.
|
lib_ct_sym
|
라벨: 기본값은 --release 로 컴파일하는 데 필요한 lib/ct.sym 파일 지정되지 않았으며 경로가 /lib/ct.sym 로 끝나는 파일이 srcs 에 정확히 하나 있는 경우 해당 파일이 사용됩니다.
|
lib_modules
|
라벨: 기본값은 |
output_licenses
|
문자열 목록입니다. 기본값은 |
version
|
정수이며 기본값은 Runtime.version().feature() 에서 반환된 정수입니다.
|
java_single_jar
규칙 소스 보기java_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)
인수
속성 | |
---|---|
name |
이름: 필수 이 타겟의 고유한 이름입니다. |
deps
|
라벨 목록입니다. 기본값은 |
compress
|
문자열, 기본값은 |
deploy_env
|
라벨 목록입니다. 기본값은 |
deploy_manifest_lines
|
문자열 목록입니다. 기본값은 META-INF/manifest.mf 파일에 추가할 줄 목록입니다.
|
exclude_build_data
|
불리언, 기본값은 |
multi_release
|
불리언, 기본값은 |
java_toolchain
규칙 소스 보기java_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)
Java 컴파일러의 구성을 지정합니다. 사용할 도구 모음은 --java_toolchain 인수를 통해 변경할 수 있습니다. 일반적으로 Java 컴파일러를 조정하려는 경우가 아니면 이러한 규칙을 작성하지 않는 것이 좋습니다.
예
간단한 예는 다음과 같습니다.
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",
)
인수
속성 | |
---|---|
name |
이름: 필수 이 타겟의 고유한 이름입니다. |
android_lint_data
|
라벨 목록입니다. 기본값은 |
android_lint_jvm_opts
|
문자열 목록입니다. 기본값은 |
android_lint_opts
|
문자열 목록입니다. 기본값은 |
android_lint_package_configuration
|
라벨 목록입니다. 기본값은 |
android_lint_runner
|
라벨: 기본값은 |
bootclasspath
|
라벨 목록입니다. 기본값은 |
compatible_javacopts
|
null; 기본값은 |
deps_checker
|
라벨: 기본값은 |
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
|
문자열 목록입니다. 기본값은 |
misc
|
문자열 목록입니다. 기본값은 |
oneversion
|
라벨: 기본값은 |
oneversion_allowlist
|
라벨: 기본값은 |
oneversion_allowlist_for_tests
|
라벨: 기본값은 |
oneversion_whitelist
|
라벨: 기본값은 |
package_configuration
|
라벨 목록입니다. 기본값은 |
proguard_allowlister
|
라벨: 기본값은 |
reduced_classpath_incompatible_processors
|
문자열 목록입니다. 기본값은 |
singlejar
|
라벨: 기본값은 |
source_version
|
문자열, 기본값은 |
target_version
|
문자열, 기본값은 |
timezone_data
|
라벨: 기본값은 |
tools
|
라벨 목록입니다. 기본값은 |
turbine_data
|
라벨 목록입니다. 기본값은 |
turbine_jvm_opts
|
문자열 목록입니다. 기본값은 |
xlint
|
문자열 목록입니다. 기본값은 |