Как включить банки с classpath в банку в Ant - PullRequest
6 голосов
/ 14 августа 2011

Я разрабатываю настольное приложение с использованием swingx, spring и ant для их сборки.Это мой первый проект в муравье.Как добавить jar classpath в исполняемый файл jar, созданный ant?У меня есть swingx, весенняя банка в моем классе.Это моя цель для баночки:

<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>

1 Ответ

20 голосов
/ 14 августа 2011

Вы можете добавить их с помощью следующего кода:

<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>

Это будет включать все файлы * .jar, которые находятся в папке $ {lib} .

Но этот код должен быть в муравьиной compile target. Потому что, прежде чем генерировать JAR-пакет, вы должны скомпилировать его. И поэтому вам нужны swingx, пружинные банки.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...