【问题标题】:Adding custom jar to ant's classpath before running a target在运行目标之前将自定义 jar 添加到 ant 的类路径
【发布时间】:2013-10-09 05:43:53
【问题描述】:

我正在尝试在实际调用目标之前向 ant 的类路径添加更多自定义 jar,但它没有使用我的自定义 jar,因此我从 ant 的 taskdef 类中得到错误 ClassName 找不到。有办法处理吗?

main.ksh

#/bin/ksh

.
.

ANT_CLASSPATH=$JDK_HOME/jre/lib/rt.jar
ANT_CLASSPATH=$ANT_CLASSPATH:$ANTBUILD_HOME/lib/ant-$ANT_VERSION.jar
.
.

echo $ANT_CLASSPATH
export ANT_CLASSPATH

.
.
# java call with framed ANT_CLASSPATH to ant target which is part of main build.xml ### This call, I don't want to run without my custom jar in ANT_CLASSPATH ###

我的新 ksh 文件如下所示,我在其中将新的自定义 jar 添加到 ANT_CLASSPATH

sub.ksh

#/bin/ksh


# Adding some more to jars to ANT_CLASSPATH

export ANT_CLASSPATH=../lib/custom/custom-3.0.jar


main.ksh new-build.xml $*

【问题讨论】:

    标签: ant classpath


    【解决方案1】:

    ANT 类路径最好在构建文件中进行管理:

    <path id="runtime.path">
      <pathelement location="lib/custom/custom-3.0.jar"/>
      ..
      ..
    </path>
    
    <path id="build.path">
      <pathelement location="lib/custom-anttask-3.0.jar"/>
      ..
      ..
    </path>
    
    <!-- Use the paths using 'classpathref' attributes on tasks -->
    <java .... classpathref="runtime.path"/>
    <taskdef .... classpathref="build.path"/>
    

    【讨论】:

    • 我同意。但是我在运行作为另一个 xml 文件的一部分的目标时发现了问题,并且文件将 taskdef 添加到未添加到 ant 类路径的类中。
    • @user1587504 你没抓住重点。不要使用环境变量管理类路径。这是不灵活和不可访问的。而是在 ANT 构建中创建路径并将其用于 java 和 taskdef 任务。查看更新。
    【解决方案2】:

    由于最初的想法是不接触 main.ksh 脚本,所以没有仔细看过它。我的错,如果它必须使用导出值形式 sub.ksh,则必须更正。

    我只需要在第一行附加导出的值:

    ANT_CLASSPATH=$ANT_CLASSPATH:$JDK_HOME/jre/lib/rt.jar

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-03-02
      • 2012-04-22
      • 1970-01-01
      相关资源
      最近更新 更多