【问题标题】:How to set classpath in ant correctly?如何在ant中正确设置类路径?
【发布时间】:2014-07-26 16:53:38
【问题描述】:

我只依赖路径 projectRoot/lib/jsoup.jar

我的 build.xml 很简单:

<project name="Ant-Demo" default="main" basedir=".">

    <property name="src.dir" value="src" />
    <property name="build.dir" value="buildDirectory" />
    <property name="dist.dir" value="dist" />
    <property name="docs.dir" value="docs" />
    <property name="lib.dir" value="lib" />

    <path id="build.classpath">
        <pathelement location="lib/jsoup-1.7.3.jar"/>
    </path>

    <target name="compile" depends="clean,makedir">
        <javac srcdir="${src.dir}" destdir="${build.dir}" classpathref="build.classpath" />
    </target>

    <target name="jar" depends="compile">
    <jar destfile="${dist.dir}/AntDemo,jar" basedir="${build.dir}">
        <manifest>
            <attribute name="Main-Class" value="ant.test" />
        </manifest>
    </jar>
</target>
    ........................................... 

这不起作用,因为 jsoup.jar 不包含在最终的 AntDemo.jar 中。

编辑 当编译目标运行时,输出有警告:

compile:
    [javac] D:\Software\es_ws\AntDemo\build.xml:30: warning: 'includeantruntime' was not set, defaulting to build.sysclasspath=last; set to false for repeatable builds
    [javac] Compiling 2 source files to D:\Software\es_ws\AntDemo\buildDirectory

这个警告是什么意思?

谢谢!

【问题讨论】:

标签: java ant


【解决方案1】:

如果您需要将 jsoup.jar 的内容包含在您的 AntDemo.jar 中,您可以通过多种方式实现。 我的建议是使用这个解决方案:

<jar destfile="${dist.dir}/AntDemo.jar" >
    <manifest>
        <attribute name="Main-Class" value="ant.test" />
    </manifest>
    <fileset dir="${build.dir}" />
    <zipfileset includes="**/*.class" src="lib/jsoup-1.7.3.jar" />
</jar>

【讨论】:

  • 最好将提取的类文件复制到目标jar中。
【解决方案2】:

当您编译类并指定类路径时,javac 类路径中的类和其他资源不会被复制到目标位置、ant 中或典型命令行 javac 中。您需要手动复制它们,或者在 ant 中使用 copy 或其他方式复制它们。

【讨论】:

猜你喜欢
  • 2023-04-06
  • 2011-07-30
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-11-25
  • 1970-01-01
相关资源
最近更新 更多