2011-04-01 61 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。