openSUSE:Java jpackage-utils
build-classpath
build-classpath - 一个小型工具,用于使用指定的 JAR 文件构建 Java CLASSPATH。CLASSPATH 将返回到标准输出。此脚本应在 spec 文件的 %pre、%build 部分,或在 pre/post un/install 脚本中,或在包装脚本中使用。
常见的用法形式是
设置 CLASSPATH
$ build-classpath ant
/usr/share/java/ant.jar
$ export CLASSPATH=$(build-classpath ant servletapi5)
$ echo ${CLASSPATH}
/usr/share/java/ant.jar:/usr/share/java/servletapi5.jar
如果 jar 文件位于 %{_javadir} 的子目录中,您需要编写
$ build-classpath asm/asm /usr/share/java/asm/asm.jar
如果您需要子目录中的所有类,您应该简单地编写
$ build-classpath asm/ /usr/share/java/asm/asm-1.5.3.jar:/usr/share/java/asm/asm-analysis-1.5.3.jar: /usr/share/java/asm/asm-attrs-1.5.3.jar:/usr/share/java/asm/asm-tree-1.5.3.jar: /usr/share/java/asm/asm-util-1.5.3.jar:/usr/share/java/asm/asm-xml-1.5.3.jar: /usr/share/java/asm/kasm-1.5.3.jar
请注意,如果参数中存在拼写错误,build-classpath 将返回相同的结果,因此 build-classpath asm/foo 的输出与上面的示例相同!
也可以使用 build-classpath 创建符号链接,如果程序期望 JAR 文件位于某些外部目录中。
$ ln -s $(build-classpath ant) $ readlink ant.jar /usr/share/java/ant.jar $ ln -s $(build-classpath ant) libs/expected_jar_name-1.0.9.jar $ readlink libs/expected_jar_name-1.0.9.jar /usr/share/java/ant.jar
当 build-classpath 返回多个路径时,build-classpath 和 ln 的组合可能会产生错误的符号链接。
build-classpath-directory
一个从目录构建 classpath 的小型脚本。此脚本查找指定目录中的所有 jar 文件并生成一个 CLASSPATH。
build-classpath-directory /usr/share/java /usr/share/java/libgcj-4.3.jar:/usr/share/java/libgcj-tools-4.3.jar: /usr/share/java/ecj-3.3.jar:/usr/share/java/ecj.jar: /usr/share/java/tomcat6-servlet-2.5-api-6.0.16.jar: /usr/share/java/tomcat6-servlet-2.5-api.jar [snip]
build-jar-repository
通过复制文件或创建符号链接,在指定的目录中构建一个 JAR 存储库。此脚本是比 build-classpath 和 ln(或 cp)的组合更好的解决方案,用于生成符号链接(或 JAR 文件的副本)。
如果未指定任何选项,默认操作将是创建符号链接。在其他情况下,脚本具有以下参数
-c, --copy复制文件而不是链接-h, --hard创建硬链接-p, --preserve-naming保留原始 JAR 文件的名称-s, --soft, --symbolic创建符号链接(默认)
常见的用法很简单
$ mkdir libs $ build-jar-repository libs ant asm/asm
build-jar-repository 不会像 build-classpath 那样生成符号链接,而会在文件名中添加方括号。
$ ls libs [ant].jar [asm][asm].jar
方括号的目的是识别脚本创建的符号链接,并且可以重新运行脚本以将它们链接到新位置。应该通过 -p, --preserve-naming 参数抑制此行为。
$ build-jar-repository -p libs ant asm/asm ant.jar asm_asm.jar
在这种情况下,斜杠符号被下划线替换,默认操作更改为复制,因此如果您想要 JAR 文件的符号链接,您需要添加 -s 参数。