2011-04-01 57 views
1

我試圖在Linux中運行一個螞蟻生成,我得到奇怪的結果。如果沒有在類路徑中指定每個庫,我似乎無法運行任何東西,所以我係統地將「lib」和「ant/dep/lib」位置中的每個jar都明確地添加到類路徑中。在Linux中的螞蟻生成

它運行一點沒有任何問題(這是一個設置批處理,所以在腳本的第一個階段,它使用了大量的「輸入」任務),然後我收到消息org.apache.tools.ant找不到.taskdefs.optional.PropertyFile。環顧四周,我發現它位於ant-nodeps.jar中,我已將它添加到類路徑中,但沒有更改。

由於缺少庫而導致完全失敗,我可以理解,但如果我確信包含了每個庫(包括ant-nodeps.jar),爲什麼構建會部分運行?

腳本文件來啓動其計算方法如下:

#!/QOpenSys/usr/bin/bsh 
ANT_HOME=dep/ant 
PARAMS="-Dant.home=$ANT_HOME -Dsystem.type=as400 -Dis-as400=y" 
LIBS="lib/ant-contrib-1.0b3.jar:lib/ant-launcher.jar:lib/ant.jar:lib/catalina-ant.jar:lib/catalina-deployer.jar:lib/commons-net-2.2.jar:lib/el-api.jar:lib/ganymed.jar:lib/jakarta-oro-2.0.8.jar:lib/jasper-el.jar:lib/jasper.jar:lib/jsp-api.jar:lib/log4j-1.2.16.jar:lib/mail.jar" 
ANTLIBS="$ANT_HOME/lib/ant-antlr.jar:$ANT_HOME/lib/ant-jai.jar:$ANT_HOME/lib/ant-starteam.jar:$ANT_HOME/lib/ant-apache-bcel.jar:$ANT_HOME/lib/ant-javamail.jar:$ANT_HOME/lib/ant-stylebook.jar:$ANT_HOME/lib/ant-apache-bsf.jar:$ANT_HOME/lib/ant-jdepend.jar:$ANT_HOME/lib/ant-swing.jar:$ANT_HOME/lib/ant-apache-log4j.jar:$ANT_HOME/lib/ant-jmf.jar:$ANT_HOME/lib/ant-testutil.jar:$ANT_HOME/lib/ant-apache-oro.jar:$ANT_HOME/lib/ant-jsch.jar:$ANT_HOME/lib/ant-trax.jar:$ANT_HOME/lib/ant-apache-regexp.jar:$ANT_HOME/lib/ant-junit.jar:$ANT_HOME/lib/ant-weblogic.jar:$ANT_HOME/lib/ant-apache-resolver.jar:$ANT_HOME/lib/ant-launcher.jar:$ANT_HOME/lib/ant.jar:$ANT_HOME/lib/ant-commons-logging.jar:$ANT_HOME/lib/ant-netrexx.jar:$ANT_HOME/lib/xercesImpl.jar:$ANT_HOME/lib/ant-commons-net.jar:$ANT_HOME/lib/ant-nodeps.jar:$ANT_HOME/lib/xml-apis.jar" 

java -classpath $LIBS:$ANTLIBS $PARAMS org.apache.tools.ant.launch.Launcher -buildfile install/install.xml 

任何幫助,將不勝感激,哪怕只是什麼嘗試建議。

編輯:根據oers觀察,我意識到有螞蟻畢竟有shell腳本(可惜,我不是linux的專家),所以我會嘗試使用它來啓動螞蟻而不是嘗試自己做同樣的事情。我會讓每個人都知道我的進展,並且/或者我是否能夠以這種方式解決問題。

+2

你爲什麼要寫自己的螞蟻腳本?有一個可執行文件在螞蟻/斌 這基本上是一樣的(向類路徑添加一切,但使用遍歷每個jar文件的迭代) – oers 2011-04-01 08:05:44

+0

它使用.bat文件和perl腳本,並儘可能多地我想在這臺機器上安裝perl,這個設置必須始終工作,這意味着我必須在運行安裝程序之前自動執行一些perl安裝,我寧願不必爲了能夠運行ant而這樣做。 – Neil 2011-04-01 08:07:36

回答

2

我看着我的機器上的shellcript。 有一個額外的參數設置:

-Dant.library.dir=\"$ANT_LIB\" 

或許這是需要?

ant_exec_command="exec \"$JAVACMD\" $ANT_OPTS 
    -classpath \"$LOCALCLASSPATH\" 
    -Dant.home=\"$ANT_HOME\" 
    -Dant.library.dir=\"$ANT_LIB\" $ant_sys_opts 
    org.apache.tools.ant.launch.Launcher 
    $ANT_ARGS 
    -cp \"$CLASSPATH\" 
    $ant_exec_args" 
+0

我有同樣的問題,但我無法理解你的答案。你能澄清嗎?抱歉! – Ziggy 2012-07-22 18:30:36

+1

如果你有你自己的build ant或者只是用java調用ant ...,你需要在調用命令中加入參數'-Dant.library.dir = PATH_TO_ANT_LIB_DIR',否則ants_lib dir不在類路徑 – oers 2012-07-22 18:34:27

+0

基本上解決方案是使用ant本身提供的shell腳本來啓動螞蟻 – oers 2012-07-22 18:36:19

0

使用ant腳本啓動安裝程序似乎有竅門,將參數-lib指定爲lib,將-buildfile指定爲install/install.xml。