2014-10-04 33 views
0

我使用Ant作爲構建工具,我把這個線在我的Ant腳本在開始的時候:如何使Redline RPM Library與Ant協同工作?

<taskdef name="pure-java-rpm" classname="org.redline_rpm.ant.RedlineTask" classpath="lib/ant/redline-1.1.16.jar" /> 

我還叫它:

<pure-java-rpm group="Games" name="${project-unix-name}" version="0" destination="${destdir}"> 
     <zipfileset prefix="/usr/share/games/${project-unix-name}" file="${destdir}/${game-jar-filename}"/> 
     <depends name="java" version=">= 1.7"/> 
    </pure-java-rpm> 

我收到以下錯誤信息: 構建失敗 /home/gouessej/Documents/programmation/java/workspace/tuer/build.xml:445:java.lang.NoClassDefFoundError:組織/阿帕奇/公/壓縮/壓縮/ bzip2的/ BZip2CompressorInputStream

然而,Apache Commons Compress沒有被提及,它似乎不依賴於這個庫,依據the "usage" page。我是否真的必須將Apache Commons Compress添加到此任務定義的類路徑中才能使其工作?還有其他解決方案嗎?

回答

1

說明沒有提到依賴關係,您至少需要SLF4J,Bountycastle,XZ和Apache Commons Compress才能使用Redline RPM。我只是修改了我的任務定義:

<taskdef name="pure-java-rpm" classname="org.redline_rpm.ant.RedlineTask"> 
    <classpath> 
     <pathelement path="bcpg-jdk15on-151.jar"/> 
     <pathelement path="commons-compress-1.8.1.jar"/> 
     <pathelement path="slf4j-api-1.7.7.jar"/> 
     <pathelement path="slf4j-simple-1.7.7.jar"/> 
     <pathelement path="xz-1.4.jar"/> 
     <pathelement path="redline-1.1.16.jar"/> 
    </classpath> 
</taskdef> 

你可以在這裏找到這些JAR文件:

Apache Commons Compress

Bouncycastle

SLF4J

XZ

+0

這些笑這是過去的問題:)。我建議你使用[maven](https://maven.apache.org/index.html)構建工具,它具有完全的依賴管理。使用ant你可以使用[Ivy](http://ant.apache.org/ivy/) – Gurvan 2015-06-25 07:54:45

+1

首先,Redline RPM也可以與Maven一起使用。其次,單獨Maven並不能解決這個問題,rpm-maven-plugin需要本機RPM支持。在沒有本地支持RPM構建工具的平臺上構建RPM並不是過去的問題。 Redline RPM部分解決了這個問題。最後,切換到Maven需要遵循嚴格的目錄佈局,這不是微不足道的,它不會解決我的問題,沒有額外的插件。如果在pom文件中缺少某些依賴關係,那麼瞭解它們對於修復它仍然有用。切換到最新的時尚工具並不能解決所有問題。 – gouessej 2015-06-25 13:21:22

相關問題