我有通过maven构建rpm的java项目。必需创建noarch包,但我看到具体的拱。 我在MacOsX上通过macports安装rpm(4.4.9或5.2.0),并从maven rpm插件运行命令:
sudo rpmbuild -bb -v --buildroot /path/to/project/buildroot --target noarch java-search-qt.spec Building target platforms: noarch Executing(%install): /bin/bash -e /tmp/rpm-tmp.69257 + umask 022 + cd /opt/local/src/macports/BUILD + /bin/rm -rf /path/to/project/target/rpm/project/buildroot + /bin/rm -rf /path/to/project/target/rpm/project/buildroot + '[' -e /path/to/project/target/rpm/project/buildroot ']' + mv /path/to/project/target/rpm/project/tmp-buildroot /path/to/project/target/rpm/project/buildroot + /opt/local/lib/rpm/brp-compress + /opt/local/lib/rpm/brp-strip + /opt/local/lib/rpm/brp-strip-static-archive + /opt/local/lib/rpm/brp-strip-comment-note + /opt/local/lib/rpm/brp-nobuildrootpath Processing files: java-search-qt-1.0.17-1 Finding Provides: /opt/local/lib/rpm/find-provides Finding Requires: /opt/local/lib/rpm/find-requires Requires(interp): /bin/bash /bin/bash /bin/bash /bin/bash Requires(verify): /bin/bash Requires(pre): /bin/bash Requires(post): /bin/bash Requires(postun): /bin/bash Checking for unpackaged file(s): /opt/local/lib/rpm/check-files /path/to/project/target/rpm/project/buildroot Wrote: /opt/local/src/macports/RPMS/i386/project.i386.rpm
Maven插件使用选项“--target noarch”,但rpmbuild完全忽略了它。预计noarch.rpm文件,为什么rpmbuild在4.4.9版和x86上创建i386?
更新
我找到了一个调用rpmbuilder的工作变体,build * .noarch.rpm文件:
rpmbuild -bb --target noarch-linux-pc project.spec
另一个变体,build * .i386.rpm文件:
rpmbuild -bb --buildroot /path/to/buildroot --target noarch-linux-pc project.spec rpmbuild -bb --define '_topdir /path/to/topdir' --target noarch-linux-pc project.spec
我无法理解。有什么想法吗?
P.S。抱歉我的英语,这对我来说很难。
答案 0 :(得分:6)
我有不同版本的所有内容,但在OS X上,使用RPM 5.4.14和rpm-maven-plugin 2.1-alpha-3,我可以通过指定:
为Linux创建一个noarch RPM<needarch>noarch</needarch>
<targetOS>linux</targetOS>
rpm-maven-plugin说:
[INFO] Building target platforms: noarch-apple-linux
从命令行查看包,一切看起来都很好:
rpm -qp --qf 'Arch:%{ARCH} OS:%{OS}\n' my-rpm-0.0.1-1.noarch.rpm
Arch:noarch OS:linux
...结果安装在Linux上。
答案 1 :(得分:5)
我发现了错误!
maven-rpm-plugin工具很糟糕。此包包含类RPMHelper,并使用bash命令构建器。 rpmbuild工具需要强大的param排序,此类忽略所有规则。我更改了param排序,现在我已经正确构建了rpm数据包。 从我看来,codehaus命令不再支持。我认为需要我们在github上需要一个fork。
答案 2 :(得分:1)
我没有在MacOSX上构建的经验,但我想我会在这里发布我们的pom.xml
文件作为参考:
我们在CentOS Linux下使用的maven命令行是:
mvn clean compile rpm:attached-rpm deploy
这会部署我们的RPM并创建:
target/rpm/mprew-behavior/RPMS/noarch/mprew-behavior-2.12.0s-19068.noarch.rpm
希望这有所帮助。