규칙
- 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
규칙 소스 보기java_binary(name, deps, srcs, data, resources, args, classpath_resources, compatible_with, create_executable, deploy_env, deploy_manifest_lines, deprecation, distribs, env, exec_compatible_with, exec_properties, features, javacopts, jvm_flags, launcher, licenses, main_class, output_licenses, plugins, resource_jars, resource_strip_prefix, restricted_to, runtime_deps, stamp, tags, target_compatible_with, testonly, toolchains, use_launcher, use_testrunner, visibility)
Java 보관 파일 ('jar 파일')과 규칙과 동일한 이름의 래퍼 셸 스크립트를 빌드합니다.
래퍼 셸 스크립트는 바이너리가 종속되는 각 라이브러리의 jar 파일 등이 포함된 클래스 경로를 사용합니다. 래퍼 셸 스크립트를 실행할 때 비어 있지 않은 JAVABIN
환경 변수는 Bazel의 --java_runtime_version
플래그를 통해 지정된 버전보다 우선 적용됩니다.
래퍼 스크립트는 여러 고유한 플래그를 허용합니다. 래퍼에서 허용하는 구성 가능한 플래그 및 환경 변수의 목록은 //src/main/java/com/google/devtools/build/lib/bazel/rules/java/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에 자동으로 로드됩니다.
타겟이 launcher 속성을 지정하면 _deploy.jar가 일반 JAR 파일이 아닌 네이티브 바이너리가 됩니다. 여기에는 런처와 정적 바이너리에 모두 링크된 규칙의 네이티브 (C++) 종속 항목이 포함됩니다. 실제 jar 파일의 바이트가 해당 네이티브 바이너리에 추가되어 실행 파일과 Java 코드가 모두 포함된 단일 바이너리 블롭이 생성됩니다. 결과 jar 파일은 네이티브 바이너리를 실행하는 것처럼 직접 실행할 수 있습니다.
name_deploy-src.jar
: 타겟의 전이 폐쇄에서 수집된 소스가 포함된 보관 파일입니다. 이는 jar에 일치하는 소스 jar가 없는 경우를 제외하고deploy.jar
의 클래스와 일치합니다.
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 |
이름: 필수사항 이 타겟의 고유한 이름입니다. 애플리케이션의 기본 진입점인 소스 파일의 이름 (확장자 제외)을 사용하는 것이 좋습니다. 예를 들어 진입점이 Main.java 인 경우 이름은 Main 일 수 있습니다.
|
deps
|
라벨 목록입니다. 기본값은 deps 에 관한 일반적인 설명은 대부분의 빌드 규칙에서 정의하는 일반적인 속성을 참고하세요.
|
srcs
|
라벨 목록입니다. 기본값은
규칙: 규칙 (일반적으로
이 인수는 |
resources
|
라벨 목록입니다. 기본값은
리소스가 지정되면 컴파일 시 생성된 일반적인 리소스는 소스 파일 또는 생성된 파일일 수 있습니다. |
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 바이너리의 래퍼 스크립트에는 모든 종속 jar를 찾기 위한 CLASSPATH 정의가 포함되어 있으며 올바른 Java 인터프리터를 호출합니다.
래퍼 스크립트에서 생성된 명령줄에는 기본 클래스의 이름과 이 속성은 |
launcher
|
라벨: 기본값은 bin/java 프로그램 대신 Java 프로그램을 실행하는 데 사용할 바이너리를 지정합니다.
타겟은 cc_binary 여야 합니다.
Java Invocation API를 구현하는 모든 cc_binary 를 이 속성의 값으로 지정할 수 있습니다.
기본적으로 Bazel은 일반 JDK 런처 (bin/java 또는 java.exe)를 사용합니다. 관련 네이티브 (C++, SWIG, JNI) 종속 항목은 JDK 런처를 사용하는지 또는 다른 런처를 사용하는지에 따라 다르게 빌드됩니다.
기본 JDK 런처 이외의 런처를 사용하면 |
main_class
|
문자열, 기본값은 main() 메서드가 있는 클래스의 이름입니다.
규칙에서 이 옵션을 사용하는 경우 srcs=[...] 목록이 필요하지 않습니다.
따라서 이 속성을 사용하면 이미 하나 이상의 main() 메서드를 포함하는 Java 라이브러리에서 실행 파일을 만들 수 있습니다.
이 속성의 값은 소스 파일이 아닌 클래스 이름입니다. 클래스는 런타임에 사용할 수 있어야 합니다. 이 규칙 ( |
plugins
|
라벨 목록입니다. 기본값은 java_plugin 는 이 규칙이 빌드될 때마다 실행됩니다. 라이브러리는 exported_plugins 를 사용하는 종속 항목에서 플러그인을 상속할 수도 있습니다. 플러그인에서 생성된 리소스는 이 규칙의 결과 jar에 포함됩니다.
|
resource_jars
|
라벨 목록입니다. 기본값은 |
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, compatible_with, constraints, deprecation, distribs, exec_compatible_with, exec_properties, exports, features, jars, licenses, neverlink, proguard_specs, restricted_to, runtime_deps, srcjar, tags, target_compatible_with, testonly, visibility)
이 규칙을 사용하면 사전 컴파일된 .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
|
라벨 목록입니다. 기본값은 |
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, compatible_with, deprecation, distribs, exec_compatible_with, exec_properties, exported_plugins, exports, features, javacopts, licenses, neverlink, plugins, proguard_specs, resource_jars, resource_strip_prefix, restricted_to, runtime_deps, tags, target_compatible_with, testonly, visibility)
이 규칙은 소스를 컴파일하고 .jar
파일에 연결합니다.
암시적 출력 타겟
libname.jar
: 클래스 파일이 포함된 Java 보관 파일입니다.libname-src.jar
: 소스가 포함된 보관 파일 ('소스 jar')입니다.
인수
속성 | |
---|---|
name |
이름: 필수사항 이 타겟의 고유한 이름입니다. |
deps
|
라벨 목록입니다. 기본값은 deps 에 관한 일반적인 설명은 대부분의 빌드 규칙에서 정의하는 일반적인 속성을 참고하세요.
반면 |
srcs
|
라벨 목록입니다. 기본값은
규칙: 규칙 (일반적으로
이 인수는 |
data
|
라벨 목록입니다. 기본값은 data 에 관한 일반적인 설명은 대부분의 빌드 규칙에서 정의하는 일반적인 속성을 참고하세요.
|
resources
|
라벨 목록입니다. 기본값은
리소스가 지정되면 컴파일 시 생성된 일반적인 리소스는 소스 파일 또는 생성된 파일일 수 있습니다. |
exported_plugins
|
라벨 목록입니다. 기본값은 java_plugin (예: 주석 처리기) 목록입니다.
지정된 |
exports
|
라벨 목록입니다. 기본값은
여기에 규칙을 나열하면 상위 규칙이 이러한 규칙에 명시적으로 종속된 것처럼 상위 규칙에서 사용할 수 있습니다. 일반 (내보내지 않은)
요약: 규칙 X는
A가 B에 종속되고 B가 C에 종속된다고 가정해 보겠습니다. 이 경우 C는 A의 전이 종속 항목이므로 C의 소스를 변경하고 A를 다시 빌드하면 모든 항목이 올바르게 다시 빌드됩니다. 그러나 A는 C에서 클래스를 사용할 수 없습니다. 이를 허용하려면 A가 내보낸 라이브러리의 폐쇄는 모든 직접 상위 규칙에서 사용할 수 있습니다. 약간 다른 예를 들어 보겠습니다. A는 B에 종속되고 B는 C와 D에 종속되며 C는 내보내지만 D는 내보내지 않습니다. 이제 A는 C에 액세스할 수 있지만 D에는 액세스할 수 없습니다. 이제 C와 D가 각각 일부 라이브러리 C'와 D'를 내보낸 경우 A는 C'에만 액세스할 수 있고 D'에는 액세스할 수 없습니다.
중요: 내보낸 규칙은 일반 종속 항목이 아닙니다. 이전 예를 계속해서 살펴보면 B가 C를 내보내고 C를 사용하려면 자체 |
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_jars
|
라벨 목록입니다. 기본값은 |
resource_strip_prefix
|
문자열, 기본값은
지정하면 이 경로 접두사가 |
runtime_deps
|
라벨 목록입니다. 기본값은 deps 와 마찬가지로 런타임 클래스 경로에 표시되지만 컴파일 시간 클래스 경로에는 표시되지 않습니다. 런타임에만 필요한 종속 항목은 여기에 나열해야 합니다. 종속 항목 분석 도구는 runtime_deps 와 deps 에 모두 표시되는 타겟을 무시해야 합니다.
|
java_lite_proto_library
규칙 소스 보기java_lite_proto_library(name, deps, data, compatible_with, deprecation, distribs, exec_compatible_with, exec_properties, features, licenses, restricted_to, tags, target_compatible_with, testonly, visibility)
java_lite_proto_library
는 .proto
파일에서 Java 코드를 생성합니다.
deps
는 proto_library
규칙을 가리켜야 합니다.
예:
java_library( name = "lib", deps = [":foo"], ) java_lite_proto_library( name = "foo", deps = [":bar"], ) proto_library( name = "bar", )
인수
속성 | |
---|---|
name |
이름: 필수사항 이 타겟의 고유한 이름입니다. |
deps
|
라벨 목록입니다. 기본값은 proto_library 규칙 목록입니다.
|
java_proto_library
규칙 소스 보기java_proto_library(name, deps, data, compatible_with, deprecation, distribs, exec_compatible_with, exec_properties, features, licenses, restricted_to, tags, target_compatible_with, testonly, visibility)
java_proto_library
는 .proto
파일에서 Java 코드를 생성합니다.
deps
는 proto_library
규칙을 가리켜야 합니다.
예:
java_library( name = "lib", deps = [":foo_java_proto"], ) java_proto_library( name = "foo_java_proto", deps = [":foo_proto"], ) proto_library( name = "foo_proto", )
인수
속성 | |
---|---|
name |
이름: 필수사항 이 타겟의 고유한 이름입니다. |
deps
|
라벨 목록입니다. 기본값은 proto_library 규칙 목록입니다.
|
java_test
규칙 소스 보기java_test(name, deps, srcs, data, resources, args, classpath_resources, compatible_with, create_executable, deploy_manifest_lines, deprecation, distribs, env, env_inherit, exec_compatible_with, exec_properties, features, flaky, javacopts, jvm_flags, launcher, licenses, local, main_class, plugins, resource_jars, resource_strip_prefix, restricted_to, runtime_deps, shard_count, size, stamp, tags, target_compatible_with, test_class, testonly, timeout, toolchains, use_launcher, use_testrunner, visibility)
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
|
라벨 목록입니다. 기본값은
규칙: 규칙 (일반적으로
이 인수는 |
resources
|
라벨 목록입니다. 기본값은
리소스가 지정되면 컴파일 시 생성된 일반적인 리소스는 소스 파일 또는 생성된 파일일 수 있습니다. |
classpath_resources
|
라벨 목록입니다. 기본값은
Java 트리의 루트에 있어야 하는 리소스의 목록입니다. 이 속성의 유일한 목적은 리소스가 클래스 경로에서 정확히 |
create_executable
|
불리언. 구성 불가. 기본값은 java_single_jar 을 사용하세요.
|
deploy_manifest_lines
|
문자열 목록입니다. 기본값은 *_deploy.jar 타겟용으로 생성된 META-INF/manifest.mf 파일에 추가할 줄 목록입니다. 이 속성의 콘텐츠는 '변수 만들기' 대체의 대상이 아닙니다.
|
javacopts
|
문자열 목록입니다. 기본값은 이러한 컴파일러 옵션은 전역 컴파일러 옵션 뒤에 javac에 전달됩니다. |
jvm_flags
|
문자열 목록입니다. 기본값은 Java 바이너리의 래퍼 스크립트에는 모든 종속 jar를 찾기 위한 CLASSPATH 정의가 포함되어 있으며 올바른 Java 인터프리터를 호출합니다.
래퍼 스크립트에서 생성된 명령줄에는 기본 클래스의 이름과 이 속성은 |
launcher
|
라벨: 기본값은 bin/java 프로그램 대신 Java 프로그램을 실행하는 데 사용할 바이너리를 지정합니다.
타겟은 cc_binary 여야 합니다.
Java Invocation API를 구현하는 모든 cc_binary 를 이 속성의 값으로 지정할 수 있습니다.
기본적으로 Bazel은 일반 JDK 런처 (bin/java 또는 java.exe)를 사용합니다. 관련 네이티브 (C++, SWIG, JNI) 종속 항목은 JDK 런처를 사용하는지 또는 다른 런처를 사용하는지에 따라 다르게 빌드됩니다.
기본 JDK 런처 이외의 런처를 사용하면 |
main_class
|
문자열, 기본값은 main() 메서드가 있는 클래스의 이름입니다.
규칙에서 이 옵션을 사용하는 경우 srcs=[...] 목록이 필요하지 않습니다.
따라서 이 속성을 사용하면 이미 하나 이상의 main() 메서드를 포함하는 Java 라이브러리에서 실행 파일을 만들 수 있습니다.
이 속성의 값은 소스 파일이 아닌 클래스 이름입니다. 클래스는 런타임에 사용할 수 있어야 합니다. 이 규칙 ( |
plugins
|
라벨 목록입니다. 기본값은 java_plugin 는 이 규칙이 빌드될 때마다 실행됩니다. 라이브러리는 exported_plugins 를 사용하는 종속 항목에서 플러그인을 상속할 수도 있습니다. 플러그인에서 생성된 리소스는 이 규칙의 결과 jar에 포함됩니다.
|
resource_jars
|
라벨 목록입니다. 기본값은 |
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, distribs, features, javacopts, licenses, packages, restricted_to, tags, target_compatible_with, testonly, 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
|
문자열 목록입니다. 기본값은 |
packages
|
라벨 목록입니다. 기본값은 package_group 집합입니다.
|
java_plugin
규칙 소스 보기java_plugin(name, deps, srcs, data, resources, compatible_with, deprecation, distribs, exec_compatible_with, exec_properties, features, generates_api, javacopts, licenses, neverlink, output_licenses, plugins, processor_class, proguard_specs, resource_jars, resource_strip_prefix, restricted_to, tags, target_compatible_with, testonly, visibility)
java_plugin
는 Bazel에서 실행하는 Java 컴파일러용 플러그인을 정의합니다. 현재 지원되는 플러그인 유형은 주석 프로세서뿐입니다. java_library
또는 java_binary
규칙은 plugins
속성을 통해 플러그인을 종속하여 실행할 수 있습니다. java_library
는 exported_plugins
를 사용하여 이를 직접적으로 사용하는 라이브러리로 플러그인을 자동으로 내보낼 수도 있습니다.
암시적 출력 타겟
libname.jar
: Java 보관 파일입니다.
인수는 processor_class
인수 추가를 제외하고 java_library
와 동일합니다.
인수
속성 | |
---|---|
name |
이름: 필수사항 이 타겟의 고유한 이름입니다. |
deps
|
라벨 목록입니다. 기본값은 deps 에 관한 일반적인 설명은 대부분의 빌드 규칙에서 정의하는 일반적인 속성을 참고하세요.
반면 |
srcs
|
라벨 목록입니다. 기본값은
규칙: 규칙 (일반적으로
이 인수는 |
data
|
라벨 목록입니다. 기본값은 data 에 관한 일반적인 설명은 대부분의 빌드 규칙에서 정의하는 일반적인 속성을 참고하세요.
|
resources
|
라벨 목록입니다. 기본값은
리소스가 지정되면 컴파일 시 생성된 일반적인 리소스는 소스 파일 또는 생성된 파일일 수 있습니다. |
generates_api
|
불리언. 기본값은 규칙이 API 생성 주석 프로세서를 사용하는 경우, 이에 종속된 다른 규칙은 컴파일 작업이 생성 규칙 후에 예약된 경우에만 생성된 코드를 참조할 수 있습니다. 이 속성은 --java_header_compilation이 사용 설정된 경우 Bazel에 예약 제약조건을 도입하도록 지시합니다. 경고: 이 속성은 빌드 성능에 영향을 미치므로 필요한 경우에만 사용하세요. |
javacopts
|
문자열 목록입니다. 기본값은 이러한 컴파일러 옵션은 전역 컴파일러 옵션 뒤에 javac에 전달됩니다. |
neverlink
|
불리언. 기본값은 tools.jar 가 있습니다.
런타임 라이브러리가 컴파일 라이브러리와 다른 경우 JLS에서 컴파일러의 인라인화를 금지하는 위치에서만 다르게 실행되어야 합니다 (이는 향후 모든 JLS 버전에 적용됨). |
output_licenses
|
라이선스 유형입니다. 기본값은 common attributes
참조
|
plugins
|
라벨 목록입니다. 기본값은 java_plugin 는 이 규칙이 빌드될 때마다 실행됩니다. 라이브러리는 exported_plugins 를 사용하는 종속 항목에서 플러그인을 상속할 수도 있습니다. 플러그인에서 생성된 리소스는 이 규칙의 결과 jar에 포함됩니다.
|
processor_class
|
문자열, 기본값은 |
proguard_specs
|
라벨 목록입니다. 기본값은 android_binary 타겟에 추가됩니다.
여기에 포함된 파일에는 -dontnote, -dontwarn, assumenosideeffects, -keep으로 시작하는 규칙과 같은 일관된 규칙만 있어야 합니다. 다른 옵션은 중복 삭제되지 않는 병합을 보장하기 위해 android_binary 의 proguard_specs에만 표시될 수 있습니다.
|
resource_jars
|
라벨 목록입니다. 기본값은 |
resource_strip_prefix
|
문자열, 기본값은
지정하면 이 경로 접두사가 |
java_runtime
규칙 소스 보기java_runtime(name, srcs, compatible_with, default_cds, deprecation, distribs, features, hermetic_srcs, java, java_home, lib_ct_sym, lib_modules, licenses, restricted_to, tags, target_compatible_with, testonly, 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 타겟에 격리가 사용 설정되어 있고 타겟이 classlist 속성을 지정하여 자체 CDS 보관 파일을 제공하지 않는 경우 java_runtime 기본 CDS가 격리된 배포 JAR에 패키징됩니다.
|
hermetic_srcs
|
라벨 목록입니다. 기본값은 |
java
|
라벨: 기본값은 |
java_home
|
문자열, 기본값은 srcs 및 java 속성은 비어 있어야 합니다.
|
lib_ct_sym
|
라벨: 기본값은 --release 로 컴파일하는 데 필요한 lib/ct.sym 파일입니다. 지정하지 않았고 srcs 에 경로가 /lib/ct.sym 로 끝나는 파일이 정확히 하나 있는 경우 이 파일이 사용됩니다.
|
lib_modules
|
라벨: 기본값은 |
version
|
정수, 기본값은 Runtime.version().feature() 에서 반환된 정수입니다.
|
java_toolchain
규칙 소스 보기java_toolchain(name, android_lint_data, android_lint_jvm_opts, android_lint_opts, android_lint_package_configuration, android_lint_runner, bootclasspath, compatible_with, deprecation, deps_checker, distribs, features, forcibly_disable_header_compilation, genclass, header_compiler, header_compiler_direct, ijar, jacocorunner, java_runtime, javabuilder, javabuilder_data, javabuilder_jvm_opts, javac_supports_multiplex_workers, javac_supports_workers, javacopts, jvm_opts, licenses, oneversion, oneversion_allowlist_for_tests, oneversion_whitelist, package_configuration, proguard_allowlister, resourcejar, restricted_to, singlejar, source_version, tags, target_compatible_with, target_version, testonly, timezone_data, tools, turbine_data, turbine_jvm_opts, visibility, xlint)
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
|
라벨 목록입니다. 기본값은 |
deps_checker
|
라벨 목록입니다. 기본값은 |
forcibly_disable_header_compilation
|
불리언. 기본값은 |
genclass
|
라벨 목록(필수) GenClass 배포 jar의 라벨입니다. |
header_compiler
|
라벨 목록입니다. 기본값은 |
header_compiler_direct
|
라벨 목록입니다. 기본값은 이 도구는 주석 처리를 지원하지 않습니다. |
ijar
|
라벨 목록(필수) ijar 실행 파일의 라벨입니다. |
jacocorunner
|
라벨: 기본값은 |
java_runtime
|
라벨: 필수사항 이 도구 모음과 함께 사용할 java_runtime입니다. 실행 구성에서 기본값은 java_runtime입니다. |
javabuilder
|
라벨 목록(필수) JavaBuilder 배포 jar의 라벨입니다. |
javabuilder_data
|
라벨 목록입니다. 기본값은 |
javabuilder_jvm_opts
|
문자열 목록입니다. 기본값은 |
javac_supports_multiplex_workers
|
불리언. 기본값은 |
javac_supports_workers
|
불리언. 기본값은 |
javacopts
|
문자열 목록입니다. 기본값은 |
jvm_opts
|
문자열 목록입니다. 기본값은 |
oneversion
|
라벨: 기본값은 |
oneversion_allowlist_for_tests
|
라벨: 기본값은 |
oneversion_whitelist
|
라벨: 기본값은 |
package_configuration
|
라벨 목록입니다. 기본값은 |
proguard_allowlister
|
라벨: 기본값은 |
resourcejar
|
라벨 목록입니다. 기본값은 |
singlejar
|
라벨 목록(필수) SingleJar 배포 jar의 라벨입니다. |
source_version
|
문자열, 기본값은 |
target_version
|
문자열, 기본값은 |
timezone_data
|
라벨: 기본값은 |
tools
|
라벨 목록입니다. 기본값은 |
turbine_data
|
라벨 목록입니다. 기본값은 |
turbine_jvm_opts
|
문자열 목록입니다. 기본값은 |
xlint
|
문자열 목록입니다. 기본값은 |