JAVA-UTILS-2.ECLASS
章节: eclass-manpages (5)更新: 2024 年 11 月
索引 返回主内容
名称
java-utils-2.eclass - Java 软件包的基础 eclass描述
此 eclass 提供 java-pkg-2.eclass 和 java-pkg-opt-2.eclass 以及 ebuilds 使用的功能。此 eclass 不应直接从 ebuild 中继承。相反,您应该为 Java 软件包继承 java-pkg-2,或者为具有可选 Java 支持的软件包继承 java-pkg-opt-2。
支持的 EAPIS
7 8功能
- java-pkg_doexamples [--subdir <subdir>] <file1/dir1> [<file2> ...]
- 将给定的参数安装到 /usr/share/doc/${PF}/examples。如果您只给它一个参数并且它是一个目录,它将安装该目录中的所有内容到 examples 目录。
Parameters: --subdir - If the examples need a certain directory structure $* - list of files to install Examples: java-pkg_doexamples demo java-pkg_doexamples demo/* examples/*
- java-pkg_addres <jar> <dir> [<find arguments> ...]
- 将资源文件添加到现有的 jar。重要的是,给定的目录实际上是相应资源树的根目录。目标目录以及 sources.lst、MANIFEST.MF、*.class、*.jar 和 *.java 文件将被自动排除。符号链接将始终被跟踪。其他参数将传递给 find。
Parameters: $1 - jar file $2 - resource tree directory $* - arguments to pass to find Example: java-pkg_addres ${PN}.jar resources ! -name "*.html"
- java-pkg_rm_files <File1.java> [File2.java] ...
- 删除 ${S} 中不需要的文件。
偶尔,您会遇到需要删除文件的场景,无论是单元测试还是普通的 Java 类。
您可以通过以下两种方式使用此功能: - 在 src_prepare() 中自己调用它并将要删除的文件列表提供给 java-pkg_rm_files。 - 在 ebuild 中定义一个名为 JAVA_RM_FILES 的数组,其中包含要删除的文件列表。
两种方式都有效,开发者可以选择自己喜欢的。如果定义了 JAVA_RM_FILES 数组,它将在 src_prepare 阶段被自动传递给 java-pkg_rm_files。
请参见 java-utils-2_src_prepare。
java-pkg_rm_files File1.java File2.java
- java-pkg_dojar <jar1> [<jar2> ...]
- 安装任意数量的 jar。jar 默认情况下将安装到 /usr/share/${PN}(-${SLOT})/lib/ 中。您可以使用 java-pkg_jarinto 更改此路径。您永远不应该安装文件名中包含软件包版本的 jar。相反,请使用下面定义的 java-pkg_newjar。
java-pkg_dojar dist/${PN}.jar dist/${PN}-core.jar
- java-pkg_regjar </path/to/installed/jar>
- 在 package.env 中记录已安装(在 ${D} 中)的 jar。这主要是在软件包有 make 或自定义脚本来安装东西时使用。
警告:如果您想使用 shell 展开,则必须使用 ${D}/...,因为此函数中的 for 将无法展开路径,以下是一个示例
java-pkg_regjar ${D}/opt/my-java/lib/*.jar
- java-pkg_newjar <path/to/oldname.jar> [<newname.jar>]
- 安装具有新名称的 jar(默认值为 $PN.jar)
例如,安装没有版本的版本化 jar
- java-pkg_addcp <classpath>
- 将某项内容添加到软件包的类路径中。对于 jar,您应该使用 dojar、newjar 或 regjar。这通常用于将目录添加到类路径。此函数的参数将附加到 JAVA_PKG_CLASSPATH
- java-pkg_doso <path/to/file1.so> [...]
- 安装任意数量的 JNI 库。它们默认情况下将安装到 /usr/lib 中,但可以使用 java-pkg_sointo 更改此路径
Example: java-pkg_doso *.so
- java-pkg_regso <file1.so> [...]
- 在 package.env 中注册已安装的 JNI 库。
Parameters: $@ - JNI libraries to register Example: java-pkg_regso *.so /path/*.so
- java-pkg_jarinto </path/to/install/jars/into>
- 更改随后的 java-pkg_dojar 调用安装 jar 的路径。
- java-pkg_sointo </path/to/install/sofiles/into>
- 更改随后的 java-pkg_doso 调用安装 JNI 库的路径。
- java-pkg_dohtml <path/to/javadoc/documentation> [...]
- 安装 Javadoc HTML 文档。建议使用 java-pkg_dojavadoc。
java-pkg_dohtml dist/docs/
- java-pkg_dojavadoc [--symlink destination] <path/to/javadocs/root>
- 安装 javadoc 文档。这应该由 doc 使用标志控制。
Parameters: $1: optional --symlink creates to symlink like this for html documentation bundles. $2: - The javadoc root directory. Examples: java-pkg_dojavadoc docs/api java-pkg_dojavadoc --symlink apidocs docs/api
- java-pkg_dosrc <path/to/sources> [...]
- 安装包含软件包源代码的 zip 文件,以便它可以在诸如 eclipse 和 netbeans 之类的 IDE 中使用。Ebuild 需要 DEPEND 于 app-arch/zip 才能使用它。它也应该由 USE=source 控制。
Example: java-pkg_dosrc src/*
- java-pkg_dolauncher <filename> [options]
- 创建一个包装器脚本以启动/运行此软件包。如有必要,包装器将切换到适当的 VM。
如果软件包只安装一个具有设置的 Main-class 属性的 jar,则可以不带参数调用它。包装器将被命名为 ${PN}。
Parameters: $1 - filename of launcher to create $2 - options, as follows: --main the.main.class.to.start --jar /the/jar/too/launch.jar or just <name>.jar --java_args 'Extra arguments to pass to java' --pkg_args 'Extra arguments to pass to the package' --pwd Directory the launcher changes to before executing java -into Directory to install the launcher to, instead of /usr/bin -pre Prepend contents of this file to the launcher
- java-pkg_dowar
- 安装 war 文件。TODO 文档
- java-pkg_jar-from [--build-only] [--with-dependencies] [--virtual] [--into dir] <package> [<package.jar>] [<destination.jar>]
- 创建一个指向特定软件包中 jar 的符号链接。许多 java 软件包在 lib/ 目录中包含依赖项。您可以使用此函数来替换这些捆绑的依赖项。依赖项将被记录到 package.env DEPEND 行中,除非传递 “--build-only” 作为第一个参数,用于那些仅在构建时必须存在而在运行时不需要的 jar(例如 junit 测试)。
Example: get all jars from xerces slot 2 java-pkg_jar-from xerces-2 Example: get a specific jar from xerces slot 2 java-pkg_jar-from xerces-2 xml-apis.jar Example: get a specific jar from xerces slot 2, and name it differently java-pkg_jar-from xerces-2 xml-apis.jar xml.jar Example: get junit.jar which is needed only for building java-pkg_jar-from --build-only junit junit.jar
Parameters --build-only - makes the jar(s) not added into package.env DEPEND line. (assumed automatically when called inside src_test) --with-dependencies - get jars also from requested package's dependencies transitively. --virtual - Packages passed to this function are to be handled as virtuals and will not have individual jar dependencies recorded. --into $dir - symlink jar(s) into $dir (must exist) instead of . $1 - Package to get jars from, or comma-separated list of packages in case other parameters are not used. $2 - jar from package. If not specified, all jars will be used. $3 - When a single jar is specified, destination filename of the symlink. Defaults to the name of the jar.
- java-pkg_jarfrom
- 请参见 java-pkg_jar-from
- java-pkg_getjars [--build-only] [--runtime-only] [--with-dependencies] <package1>[,<package2>...]
- 获取任何数量的软件包提供的类路径。除其他事项外,这可以传递给 'javac -classpath'。提供软件包被记录为 package.env DEPEND 行中的依赖项,除非传递 “--build-only” 作为第一个参数,用于那些仅在构建时必须存在而在运行时不需要的 jar(例如 junit 测试)。
Example: Get the classpath for xerces-2 and xalan, java-pkg_getjars xerces-2,xalan Example Return: /usr/share/xerces-2/lib/xml-apis.jar:/usr/share/xerces-2/lib/xmlParserAPIs.jar:/usr/share/xalan/lib/xalan.jar Parameters: --build-only - makes the jar(s) not added into package.env DEPEND line. (assumed automatically when called inside src_test) --runtime-only - marks the jar(s) not added into package.env RDEPEND line. --with-dependencies - get jars also from requested package's dependencies transitively. $1 - list of packages to get jars from (passed to java-config --classpath)
- java-pkg_getjar [--build-only] [--virtual] <package> <jarfile>
- 获取软件包中单个 jar 的完整路径。提供软件包被记录为 package.env DEPEND 行中的运行时依赖项,除非传递 “--build-only” 作为第一个参数,用于那些仅在构建时必须存在而在运行时不需要的 jar(例如 junit 测试)。
Example: java-pkg_getjar xerces-2 xml-apis.jar returns /usr/share/xerces-2/lib/xml-apis.jar Parameters: --build-only - makes the jar not added into package.env DEPEND line. --virtual - Packages passed to this function are to be handled as virtuals and will not have individual jar dependencies recorded. $1 - package to use $2 - jar to get
- java-pkg_register-dependency <package>[,<package2>...] [<jarfile>]
- 将运行时依赖项注册到软件包、软件包列表或软件包中的单个 jar,到 package.env DEPEND 行中。只能在 src_install 阶段调用。用于二进制软件包,您不需要在构建过程中为 jar 创建符号链接或获取它们的类路径。因此,依赖项只需要在 ebuild 的 RDEPEND 中指定,并且应该在 DEPEND 中省略。
Parameters: $1 - comma-separated list of packages, or a single package $2 - if param $1 is a single package, optionally specify the jar to depend on Examples: Record the dependency on whole xerces-2 and xalan, java-pkg_register-dependency xerces-2,xalan Record the dependency on ant.jar from ant-core java-pkg_register-dependency ant-core ant.jar
注意:既传递软件包列表作为第一个参数,又指定 jar 作为第二个参数是不允许的,会导致函数停止运行。我们假设您更有可能错误地传递这样的组合,而不是多个软件包提供具有相同名称的 jar 并且没有类冲突。
- java-pkg_register-optional-dependency <package>[,<package2>...] [<jarfile>]
- 将可选运行时依赖项注册到软件包、软件包列表或软件包中的单个 jar,到 package.env OPTIONAL_DEPEND 行中。只能在 src_install 阶段调用。用于可以在类路径中使用其他软件包的软件包。如果安装了这些软件包,启动器将把它们放到类路径中。典型的情况是针对各种数据库的 JDBC 实现。这比为每个实现都使用 USE 标志来触发硬依赖项更好。
Parameters: $1 - comma-separated list of packages, or a single package $2 - if param $1 is a single package, optionally specify the jar to depend on Example: Record the optional dependency on some jdbc providers java-pkg_register-optional-dependency jdbc-jaybird,jtds-1.2,jdbc-mysql
注意:既传递软件包列表作为第一个参数,又指定 jar 作为第二个参数是不允许的,会导致函数停止运行。我们假设您更有可能错误地传递这样的组合,而不是多个软件包提供具有相同名称的 jar 并且没有类冲突。
- java-pkg_register-environment-variable <name> <value>
- 将任意环境变量注册到 package.env 中。此软件包或任何依赖于此软件包的软件包的 gjl 启动器将在执行 java 命令之前将它导出到环境中。只能在 src_install 阶段调用。
- java-pkg_get-bootclasspath <version>
- 返回给定提供 bootclasspath 的软件包版本的类路径。
- java-pkg_find-normal-jars [<path/to/directory>]
- 在给定的目录(默认值为 $WORKDIR)中查找后缀为 .jar 的文件。
- java-pkg_ensure-no-bundled-jars
- 尝试在 ${WORKDIR} 中查找捆绑的 jar 文件,如果找到则停止运行。此函数应该在使用系统 jar 文件的符号链接填充 WORKDIR 或删除捆绑的 jar 文件之后调用。
- java-pkg_current-vm-matches <vm_string1> [<vm_string2> [<vm_string3>...]]
- 返回值:0:当前 vm 与任何提供的字符串匹配
- java-pkg_get-source
- 确定应该使用哪个源版本,以传递给 -source。除非您想破坏东西,否则您可能不应该设置 _WANT_SOURCE
- java-pkg_get-target
- 确定应该使用哪个目标版本,以传递给 -target。如果您不关心较低版本,您可以将 _WANT_TARGET 设置为 JDK 的版本。
- java-pkg_get-javac
- 返回编译器可执行文件
- java-pkg_javac-args
- 如果 ebuild 直接使用 javac 而不是使用 ejavac,它应该调用此函数以了解要使用哪个 -source/-target。
- java-pkg_get-jni-cflags
- 回显 JNI 编译的 CFLAGS
- java-pkg_register-ant-task [--version x.y] [<name>]
- 将此软件包注册为 ant 任务,以便 ant 在没有指定特定 ANT_TASKS 时加载它。请注意,即使没有此注册,ANT_TASKS 中指定的软件包也会被加载。主要由实际的 ant 任务软件包使用,但也可以由其他 ebuilds 使用,这些 ebuilds 过去将他们的 .jar 文件链接到 /usr/share/ant-core/lib 以获得自动加载,以实现向后兼容性。
Parameters --version x.y Register only for ant version x.y (otherwise for any ant version). Used by the ant-* packages to prevent loading of mismatched ant-core ant tasks after core was updated, before the tasks are updated, without a need for blockers. $1 Name to register as. Defaults to JAVA_PKG_NAME ($PN[-$SLOT])
- ejunit
- Junit 包装器函数。简化了运行测试并检查 DEPEND 中的 dev-java/junit。使用 org.junit.runner.JUnitCore 启动测试。
Parameters: $1 - -cp or -classpath $2 - classpath; junit and recorded dependencies get appended $@ - the rest of the parameters are passed to java Examples: ejunit -cp build/classes org.blinkenlights.jid3.test.AllTests ejunit org.blinkenlights.jid3.test.AllTests ejunit org.blinkenlights.jid3.test.FirstTest org.blinkenlights.jid3.test.SecondTest
- ejunit4
- Junit4 包装器函数。简化了运行测试并检查 DEPEND 中的 dev-java/junit:4。使用 junit.textui.TestRunner 启动测试。
Parameters: $1 - -cp or -classpath $2 - classpath; junit and recorded dependencies get appended $@ - the rest of the parameters are passed to java Examples: ejunit4 -cp build/classes org.blinkenlights.jid3.test.AllTests ejunit4 org.blinkenlights.jid3.test.AllTests ejunit4 org.blinkenlights.jid3.test.FirstTest \ org.blinkenlights.jid3.test.SecondTest
- java-utils-2_src_prepare
- src_prepare 查找捆绑的 jar 文件。不要直接调用,而是通过 java-pkg-2_src_prepare 调用!
- java-utils-2_pkg_preinst
- pkg_preinst 查找缺失和不需要的依赖项。不要直接调用,而是通过 java-pkg-2_pkg_preinst 调用!
- eant <ant_build_target(s)>
- Ant 包装器函数。将使用适当的编译器,基于用户定义的编译器。还将从变量 ANT_TASKS 设置适当的 ANT_TASKS,以及变量
Variables: EANT_GENTOO_CLASSPATH - calls java-pkg_getjars for the value and adds to the gentoo.classpath property. Be sure to call java-ant_rewrite-classpath in src_unpack. EANT_NEEDS_TOOLS - add tools.jar to the gentoo.classpath. Should only be used for build-time purposes, the dependency is not recorded to package.env! ANT_TASKS - used to determine ANT_TASKS before calling Ant.
- ejavac <javac_arguments>
- Javac 包装器函数。将使用适当的编译器,基于 /etc/java-config/compilers.conf
- ejavadoc <javadoc_arguments>
- javadoc 包装器函数。由于 1.8 中严格的 javadoc 规则,它将根据 VM 版本设置一些标志。
- java-pkg_filter-compiler <compiler(s)_to_filter>
- 用于阻止使用某些编译器。应该在 src_compile 中使用。基本上,它只是附加到 JAVA_PKG_FILTER_COMPILER
- java-pkg_force-compiler <compiler(s)_to_force>
- 用于强制使用特定的编译器。应该在 src_compile 中使用。一个常见的用途是在 amd64 上强制使用 ecj-3.1,以避免可能出现的 OutOfMemoryErrors。
- java-pkg_clean
- Java 软件包清理函数。这将删除所有 *.class 和 *.jar 文件,除了 JAVA_PKG_NO_CLEAN 中表达式指定的文件。
ECLASS 变量
- JAVA_PKG_ALLOW_VM_CHANGE = ${JAVA_PKG_ALLOW_VM_CHANGE:="yes"}
- 允许此 eclass 更改活动的 VM?如果您的系统 VM 不足以运行软件包,则构建将失败,而不是尝试切换到另一个 VM。
覆盖默认值对于在本地测试特定 VM 很有用,但不应在最终的 ebuild 中使用。
- JAVA_PKG_FORCE_VM
- 显式设置要使用的特定 VM。如果它无效,它将回退到 /etc/java-config-2/build/jdk.conf 选择使用的任何内容。
只应该用于测试和调试。
示例:使用 openjdk-11 来 emerge foo
JAVA_PKG_FORCE_VM=openjdk-11 emerge foo
- JAVA_PKG_NO_CLEAN
- 一个用于匹配 *.class 或 *.jar 文件的表达式数组,以防止它们被 java-pkg_clean 删除。
JAVA_PKG_NO_CLEAN=( "*/standard.jar" "*/launch4j.jar" "*/apps/jetty/apache-tomcat*" "*/lib/jetty*" )
- JAVA_PKG_WANT_BUILD_VM
- 一个包含 VM 句柄的列表,用于从这些 VM 中选择一个构建 VM。如果列表包含当前活动的 VM,则使用该 VM;否则,在列表中依次遍历,直到找到一个可用的/已安装的 VM。
这允许在 DEPEND 中使用显式 JDK 列表,而不是虚拟 JDK。使用此变量的用户必须确保 DEPEND 涵盖了列表中的至少一个句柄。还需要设置 JAVA_PKG_WANT_SOURCE 和 JAVA_PKG_WANT_TARGET。
- JAVA_PKG_WANT_SOURCE
- 为编译指定非标准 Java 源版本(通过 javac -source 参数)。通常,这是从 DEPEND 中指定的 jdk 版本确定的。请参阅下面的 java-pkg_get-source 函数。
通常仅用于测试和调试。
使用 1.8 源代码来构建 baz
JAVA_PKG_WANT_SOURCE=1.8 emerge baz
- JAVA_PKG_WANT_TARGET
- 与 JAVA_PKG_WANT_SOURCE 相同(见上文),但用于 javac -target 参数,该参数影响生成的字节码的版本。通常,这是从 RDEPEND 中指定的 jre/jdk 版本确定的。请参阅下面的 java-pkg_get-target 函数。
通常仅用于测试和调试。
构建 bar 以与 1.8 兼容
JAVA_PKG_WANT_TARGET=1.8 emerge bar
- JAVA_TEST_EXTRA_ARGS
- 一个包含额外参数的数组,这些参数应在运行测试时传递给 java 命令。当需要向使用 System.getProperty() 的 Java 程序传递值时,它非常有用。如果它使用 System.getenv(),则使用 `export var=value` 代替。
它仅在运行测试时使用。
JAVA_TEST_EXTRA_ARGS=( -Dsome.var=x "-Dother.var= )
- JAVA_TEST_RUNNER_EXTRA_ARGS
- 一个包含额外参数的数组,这些参数应在运行测试时传递给测试运行器。当需要向测试运行器传递额外参数时,它非常有用。
它仅在运行测试时使用。
JAVA_TEST_RUNNER_EXTRA_ARGS=( -verbose 3 )
- JAVA_PKG_DEBUG
- 一个变量,设置为 "yes" 或 "y",或任何长度不为零的字符串。当设置此变量时,java eclass 的详细程度会增加,并显示额外的日志。
JAVA_PKG_DEBUG="yes"
- JAVA_RM_FILES
- 一个包含要删除的文件列表的数组。如果定义了此数组,它将自动传递给 java-pkg_rm_files,以便在 src_prepare 阶段进行处理。
JAVA_RM_FILES=( path/to/File1.java DELETEME.txt )
- JAVA_PKG_FORCE_ANT_TASKS
- 一个由 $IFS 分隔的 ant 任务列表。可以在调用 emerge/ebuild 之前设置环境变量,以覆盖 ebuild 中设置的变量,主要用于在将最终的 (WANT_)ANT_TASKS 放入 ebuild 之前进行测试。仅影响 eant() 调用中的 ANT_TASKS,不影响 WANT_ANT_TASKS 中指定的依赖项。
JAVA_PKG_FORCE_ANT_TASKS="ant-junit ant-trax" \ ebuild foo.ebuild compile
- JAVADOC_CLASSPATH
- 一个由逗号或空格分隔的 java 包列表,这些包是生成 javadoc 所需的。如果存在具有不同依赖项的 jar 文件,可以使用它来避免在多 jar 包中过度加载编译类路径。
Example: JAVADOC_CLASSPATH=" jna-4 jsch "
- JAVADOC_SRC_DIRS
- 一个包含应用程序源代码目录的数组,这些目录相对于 ${S}。它需要位于全局范围;如果放在 src_compile() 中,它将无法正常工作。它由 java-pkg-simple.eclass 使用,以决定是否调用 ejavadoc。如果定义了此变量,那么 java-pkg-simple_src_compile 不会自动调用 ejavadoc。然后需要从 ebuild 中显式调用 ejavadoc。它旨在用于多 jar 包,以避免仅为了生成 javadoc 而进行额外的编译运行。
Example: JAVADOC_SRC_DIRS=( "${PN}-core" "${PN}-jsch" "${PN}-pageant" "${PN}-sshagent" "${PN}-usocket-jna" "${PN}-usocket-nc" "${PN}-connector-factory" )
AUTHORS
Thomas Matthijs <[email protected]>,Karl Trygve Kalleberg <[email protected]>MAINTAINERS
[email protected]REPORTING BUGS
请通过 https://bugs.gentoo.org/ 报告错误。FILES
java-utils-2.eclassSEE ALSO
ebuild(5)https://gitweb.gentoo.org/repo/gentoo.git/log/eclass/java-utils-2.eclass
Index
此文档由 man2html 使用手册页创建。
时间:2024 年 11 月 12 日,格林尼治标准时间 03:27:00