添加到Java类路径中断ant

时间:2011-07-14 13:34:46

标签: java ant classpath

我希望在我的类路径中有一个JAR,以便使用Jython REPL轻松访问。所以在我的.bashrc中我把:

export CLASSPATH=:/home/tmacdonald/path/to/jar/thing.jar

但是,这会破坏蚂蚁编译JAR可以从不同的子包编译JAR:

$ ant jar
Invalid implementation version between Ant core and Ant optional tasks.
 core    : 1.8.0 in file:/usr/share/ant/lib/ant.jar
 optional: 1.5.1 in file:/home/tmacdonald/path/to/jar/lib/gt2-2.3.3/ant-optional-1.5.1.jar
$ echo $CLASSPATH
:/home/tmacdonald/path/to/jar/thing.jar

更改类路径会修复它:

$ export CLASSPATH=
$ !ec
echo $CLASSPATH

$ ant jar
[Compiles successfully.]

但是看起来很尴尬而不是正确的事情必须不断改变我的类路径,这取决于我是想运行ant还是运行Jython REPL。我承认我对ant和classpath的了解相当薄弱。我只是将类路径视为“Java库的PATH;或Java的PYTHONPATH”,我只是对我继承的现有ant配置文件添加了一些小改动 - 我从来没有必要设置一个。

所以我有兴趣听到真正发生的事情(顺便说一下,这是怎么回事)所以我可以接受更多的教育,当然我也喜欢修复。谢谢!

1 个答案:

答案 0 :(得分:2)

我不认为Ant应该知道或关心环境变量。正确的方法是在Ant build.xml本身中设置CLASSPATH。

以下是我在Ant build.xml文件中使用的生产和测试类路径:

<path id="production.class.path">
    <pathelement location="${production.classes}"/>
    <pathelement location="${production.resources}"/>
    <fileset dir="${production.lib}">
        <include name="**/*.jar"/>
    </fileset>
</path>

<path id="test.class.path">                            
    <path refid="production.class.path"/>
    <pathelement location="${test.classes}"/>
    <pathelement location="${test.resources}"/>
    <fileset dir="${test.lib}">
        <include name="**/*.jar"/>
    </fileset>
</path>

如您所见,没有${classpath}的引用,也没有引用。