openSUSE:Java RPM 宏
构建服务教学 - 技巧和花样 - 跨发行版打包 - Debian 打包指南 - 打包检查
桌面菜单分类 - 打包常用的 RPM 宏 - 小脚本片段 - SysVinit 脚本 - 源代码服务
OBS 打包互助问答 - 打包黑名单
目录
- 1 RPM 宏
- 1.1 %_jvmdir
- 1.2 %_jvmjardir
- 1.3 %_jvmprivdir
- 1.4 %_jvmlibdir
- 1.5 %_jvmdatadir
- 1.6 %_jvmsysconfdir
- 1.7 %_jvmcommonlibdir
- 1.8 %_jvmcommondatadir
- 1.9 %_jvmcommonsysconfdir
- 1.10 %_javadir
- 1.11 %_jnidir
- 1.12 %_javadocdir
- 1.13 %java_home
- 1.14 默认 Java 命令
- 1.15 %add_jvm_extension
- 1.16 %_mavendepmapdir
- 1.17 %add_to_maven_depmap()
- 1.18 %update_maven_depmap()
RPM 宏
这些宏大部分都定义在 jpackage-utils
软件包中,因此请不要忘记将它添加到 BuildRequires 标签里去!
%_jvmdir
全部 Java 虚拟机/SDK/JRE 的安装根文件夹。
%_jvmdir %{_libdir}/jvm
%_jvmjardir
全部 Java 虚拟机/SDK/JRE 放置它们的 jar 的根文件夹。
%_jvmjardir %{_libdir}/jvm-exports
%_jvmprivdir
全部 Java 虚拟机/SDK/JRE 的私有文件的根文件夹。
%_jvmprivdir %{_libdir}/jvm-private
%_jvmlibdir
全部 Java 虚拟机/SDK/JRE 的依赖于系统架构的部分的根文件夹。
%_jvmlibdir %{_prefix}/lib/jvm
%_jvmdatadir
全部 Java 虚拟机/SDK/JRE 的与系统架构无关的部分的根文件夹。
%_jvmdatadir %{_datadir}/jvm
%_jvmsysconfdir
全部 Java 虚拟机/SDK/JRE 的配置部分的根文件夹。
%_jvmsysconfdir %{_sysconfdir}/jvm
%_jvmcommonlibdir
全部 Java 虚拟机/SDK/JRE 的依赖于系统架构的通用部分的根文件夹。
%_jvmcommonlibdir %{_prefix}/lib/jvm-commmon
%_jvmcommondatadir
全部 Java 虚拟机/SDK/JRE 的与系统架构无关的通用部分的根文件夹。
%_jvmcommondatadir %{_datadir}/jvm-commmon
%_jvmcommonsysconfdir
全部 Java 虚拟机/SDK/JRE 的通用配置部分的根文件夹。
%_jvmcommonsysconfdir %{_sysconfdir}/jvm-commmon
%_javadir
与系统架构和 Java 版本无关的 jar 的安装文件夹。红帽也学我们添加了这些宏。
通过扩展添加:
-
%{_javadir}-ext
: - 依赖特定版本的 jars -
%{_javadir}-x.y.z
: - 依赖某 Java 标准的 jars (通常 symlinks 到 %{_javadir}-ext) -
%{_javadir}-utils
: - Java 相关的脚本
为了简化问题,我们只定义了 %{_javadir}
。
%_javadir %{_datadir}/java
%_jnidir
与平台相关的(JNI)、或依赖于特定 Java 版本的 jar 的安装文件夹。
通过扩展添加:
-
%{_jnidir}-ext
: - 依赖特定版本的 jars -
%{_jnidir}-x.y.z
:- 依赖某 Java 标准的 jars (通常 symlinks 到%{_jnidir}-ext
)
为了简化问题,我们只定义了 %{_jnidir}
。
%_jnidir %{_libdir}/java
%_javadocdir
全部 javadoc 的安装根文件及。红帽的宏里也有这个。
%_javadocdir %{_datadir}/javadoc
%java_home
当前默认的 JVM 家文件夹。
%java_home %(. %{_javadir}-utils/java-functions; set_jvm; echo $JAVA_HOME)
默认 Java 命令
%ant JAVA_HOME=%{java_home} ant %jar %{java_home}/bin/jar %java %(. %{_javadir}-utils/java-functions; set_javacmd; echo $JAVACMD) %javac %{java_home}/bin/javac %javadoc %{java_home}/bin/javadoc
%add_jvm_extension
add_jvm_extension
应该由扩展软件包在 %install 使用来声明它们提供的扩展 jar。
例如一个软件包提供了 foo.jar,这是 bar 扩展w 在 java 1.2 和 1.3 中应:
%install ... # create foo.jar in %{javadir}-ext %add_jvm_extension foo bar 1.2 1.3
%files %{javadir}-ext/foo.jar %{javadir}-*/bar.jar
%add_jvm_extension JAVA_LIBDIR=%{buildroot}/%{_javadir} %{_bindir}/jvmjar -l
%_mavendepmapdir
maven depmaps 的文件夹
%_mavendepmapdir /etc/maven %_mavendepmapfragdir /etc/maven/fragments
%add_to_maven_depmap()
add_to_depmap 向 depmap 添加一项。参数有:
- %1 原始 groupid
- %2 原始 artifact id
- %3 版本
- %4 新 groupid
- %5 新 artifactid
%add_to_maven_depmap() \ install -dm 755 $RPM_BUILD_ROOT/%{_mavendepmapfragdir}\ cat >>$RPM_BUILD_ROOT/%{_mavendepmapfragdir}/%{name}<< EOF\ <dependency>\ <maven>\ <groupId>%1</groupId>\ <artifactId>%2</artifactId>\ <version>%3</version>\ </maven>\ <jpp>\ <groupId>%4</groupId>\ <artifactId>%5</artifactId>\ <version>%3</version>\ </jpp>\ </dependency>\ \ EOF\ %{nil}
%update_maven_depmap()
update_maven_depmap 更新主 maven depmap
%update_maven_depmap() \ echo -e "<dependencies>\\n" > %{_mavendepmapdir}/maven2-depmap.xml\ if [ -d %{_mavendepmapfragdir} ] && [ -n "`find %{_mavendepmapfragdir} -type f`" ]; then\ cat %{_mavendepmapfragdir}/* >> %{_mavendepmapdir}/maven2-depmap.xml\ fi\ echo -e "</dependencies>\\n" >> %{_mavendepmapdir}/maven2-depmap.xml\ %{nil}