【问题标题】:How to include classpath jars into a jar in Ant如何将类路径 jar 包含到 Ant 中的 jar 中
【发布时间】:2011-08-14 13:58:41
【问题描述】:

我正在使用 swingx、spring 和 ant 开发一个桌面应用程序来构建它们。这是我在 ant 中的第一个项目。 如何将类路径 jar 添加到 ant 构建的可执行 jar 中?我的类路径中有swingx,spring jar。这是我的 jar 目标:

<target name="jar">
    <mkdir dir="build/jar" />
    <jar destfile="build/jar/MainClass.jar" basedir="build/classes">
        <manifest>
            <attribute name="Main-Class" value="MainClass" />
        </manifest>         
    </jar>
</target>

编辑:

<project name="Number">
    <description>
            description
    </description>

    <property name="lib" value="lib" />
    <property name="src" value="src" />
    <property name="build" value="build" />
    <property name="classes" value="classes" />
    <property name="jar" value="jar"/>

    <target name="clean">
        <delete dir="${build}" />
    </target>

    <path id="classpath">
        <fileset dir="${lib}" includes="**/*.jar" />
    </path>

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

    <target name="jar" depends="clean, compile">
        <mkdir dir="${build}/${jar}" />
        <jar destfile="build/jar/Number.jar" basedir="${build}/${classes}">
            <manifest>
                <attribute name="Main-Class" value="MainClass" />
            </manifest>
            <fileset file="test.txt">
            </fileset>
        </jar>
    </target>

    <target name="run">
        <java jar="${build}/${jar}/MainClass.jar" fork="true" />
    </target>
</project>

【问题讨论】:

    标签: java ant


    【解决方案1】:

    您可以使用以下代码添加它们:

    <target name="compile">
        <mkdir dir="${classes.dir}"/>
        <javac srcdir="${src.dir}" destdir="${classes.dir}">
            <classpath>
                   <fileset dir="${lib}">
                      <include name="**/*.jar" />
                   </fileset>
             </classpath>
        </javac>
    </target>
    
    <target name="jar" depends="compile">
        <mkdir dir="${jar.dir}"/>
        <jar destfile="${jar.dir}/${ant.project.name}.jar" basedir="${classes.dir}">
            <manifest>
                <attribute name="Main-Class" value="${main-class}"/>
            </manifest>
            <zipgroupfileset dir="${lib}" includes="**/*.jar"/>
        </jar>
    
    </target>
    

    这将包括 ${lib} 文件夹下的所有 *.jar 文件。

    但是这段代码应该在 ant compile 目标中。因为在生成 jar 包之前,您需要对其进行编译。因此,您需要 swingx、spring jars。

    【讨论】:

    • 把它放在 节点的什么地方?
    • 我现在把带有编译目标的代码给你了。重要的是 jar 目标取决于编译,并且您在那里处理带有 jar 的类路径。希望现在很清楚:)。查看本教程了解基本的 ant 结构:ant.apache.org/manual/tutorial-HelloWorldWithAnt.html
    • 我首先阅读了该教程并按照我的编辑所示进行了操作。但是 swingx jar 没有添加到 Number.jar 中,这就是为什么我的代码无法运行,无法启动。
    • 同样的问题
    • 绝妙的答案。几天后它终于起作用了!
    猜你喜欢
    • 2010-09-16
    • 1970-01-01
    • 2023-03-11
    • 2011-07-16
    • 1970-01-01
    • 2012-02-15
    • 2023-03-18
    • 1970-01-01
    相关资源
    最近更新 更多