【问题标题】:Eclipse: How to build an executable jar using ant with external project dependencies?Eclipse:如何使用具有外部项目依赖项的 ant 构建可执行 jar?
【发布时间】:2015-04-21 01:56:00
【问题描述】:

我正在尝试使用 ant 脚本构建可执行的 jar 程序。当项目没有任何依赖项时,它可以正常工作,但是当我添加另一个项目作为依赖项时,ant 脚本不会从中找到类。

我做了一个简单的测试并了解它是如何工作的。

关注:

Ant 脚本示例:

<target name="compile">
    <mkdir dir="${classes.dir}" />
    <javac srcdir="${src.dir}" destdir="${classes.dir}" />
</target>

<target name="jar" depends="compile">
    <mkdir dir="${jar.dir}" />

    <jar destfile="${jar.dir}/${ant.project.name}.jar" basedir="${classes.dir}" includes="*.class" >
        <manifest>
            <attribute name="Main-Class" value="${main-class}" />
        </manifest>
    </jar>
</target>

<target name="run" depends="jar">
    <java jar="${jar.dir}/${ant.project.name}.jar" fork="true" />
</target>

我的项目结构是这样的:

AntHelloWorld 依赖于 AntTest。 我的 build.xml 在 AntHelloWorld 中,我想修改我的 ant build.xml 以使用项目依赖项。 (我还不能发布图片)

我试图找到这个,我刚刚看到如何使用 jar 依赖项来做到这一点,How to build an executable jar with external jar?

这是我在stackoverflow中的第一个问题,请随时告知我可以改进的地方。

【问题讨论】:

    标签: java eclipse ant jar dependencies


    【解决方案1】:

    javac 指令可以具有包含类路径的子元素。您可以将依赖项目的 JAR 文件放在类路径中。考虑这个演示将 JAR 文件放在类路径中的示例:

    //This goes inside the javac element     
        <classpath>
             <fileset dir="${dependentProject}/lib">
                    <include name="**/*.jar" /> 
             </fileset>
         </classpath>
    

    作为第二个示例,如果您想包含依赖项目中的类文件,并且您的类文件位于构建目录中:

     <classpath>
         <pathelement location="${dependentProject}/build" />
         <fileset dir="${dependentProject}/lib">
                <include name="**/*.jar" /> 
         </fileset>
     </classpath>
    

    【讨论】:

    • 谢谢,但我的依赖不是 jar 文件,它是一个项目(我在构建路径中添加了项目文件夹)。如何在不从依赖项目生成 jar 文件的情况下构建我的项目?我的意思是,只使用一个 ant 脚本就可以做到这一点?
    • @KlinsmanMaia 是的,这是可能的。只需使用两个 javac 命令。第一个 javac 命令将构建您的第一个项目并将类文件放在“build”文件夹中。第二个 javac 命令将构建您的其他项目,您将使用“firstProject/build”作为类路径的路径元素位置 - 就像我上面的示例一样。
    • 非常感谢,我现在就试试。
    猜你喜欢
    • 2012-01-06
    • 2016-12-13
    • 2011-08-26
    • 2013-01-19
    • 2017-08-22
    • 2014-06-11
    • 2023-01-31
    • 2012-04-21
    • 1970-01-01
    相关资源
    最近更新 更多