openSUSE:Java RPM 宏

跳转至: 导航, 搜索

用于 Java 软件包的 RPM 宏来自于 http://www.jpackage.org jpackage 项目,因此该命名和结构与其他基于 RPM 的发行版都一致。

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}