Нужна помощь в создании build.xml для сборки Ant моего проекта Java

У меня есть такой проект;

Project
    -src
        -com
            -top
                -classes
                    Class_3.java
                    Class_4.java
                -utils
                    Class_5.java
                    Class_6.java
                Class_1.java
                Class_2.java
    -data
        various files
    -libs
        lib_1.jar
        lib_2.jar
        lib_3.jar
        lib_4.jar
    build.xml

class_1.java содержит основной класс, libs содержит внешние зависимости, данные содержат различные изображения, текстовые файлы и т. д.

Я пытался написать файл сборки Ant, чтобы создать распространяемый файл JAR, но мне было трудно подключить все необходимые библиотеки и т. д.

Это то, чем я занимаюсь.

<?xml version="1.0"?>
<project name="Project" default="jar">

    <property name="libsSrc" value="libs"/>
    <property name="build" value="build"/>
    <property name="classes" value="build/classes"/>
    <property name="jar" value="build/jar"/>
    <property name="libs" value="build/libs"/>

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

    <target name="clean" description="remove intermediate files">
        <delete dir="build"/>
    </target>

    <target name="compile" description="compile the Java source code to class files">
        <mkdir dir="${classes}"/>
        <javac srcdir="." destdir="${classes}" classpathref="classpath">
            <compilerarg line="-encoding utf-8"/>
        </javac>
    </target>

    <target name="jar" depends="compile" description="create a Jar file for the application">
        <mkdir dir="${jar}"/>
        <jar destfile="${jar}/App.jar">
            <fileset dir="${classes}" includes="**/*.class"/>
            <manifest>
                <attribute name="Main-Class" value="com.top.Class_1"/>
            </manifest>
        </jar>
    </target>

</project>

В настоящее время это не работает.

Он компилируется без ошибок, но не включает необходимые зависимости, и JAR не может найти основной класс. Как я могу это исправить?


person Neilos    schedule 02.01.2012    source источник
comment
если вы отредактируете ответ на свой вопрос, опубликуйте его как ответ (который вы можете принять позже). Но на самом деле нет никаких реальных вопросов, и вы можете удалить это все вместе.   -  person oers    schedule 03.01.2012
comment
Приносим свои извинения, все комментарии учтены.   -  person Neilos    schedule 03.01.2012


Ответы (1)


<?xml version="1.0"?>
<project name="Rutherford" default="jar">

    <property name="libsSrc" value="libs"/>
    <property name="build" value="build"/>
    <property name="classes" value="build/classes"/>
    <property name="jar" value="build/jar"/>
    <property name="libs" value="build/libs"/>

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

    <pathconvert property="mf.classpath" pathsep=" ">
            <path refid="classpath"/>
            <mapper>
                    <chainedmapper>
                            <flattenmapper/>
                            <globmapper from="*.jar" to="lib/*.jar"/>
                    </chainedmapper>
            </mapper>
    </pathconvert>

    <target name="clean" description="remove intermediate files">
        <delete dir="build"/>
    </target>

    <target name="compile" description="compile the Java source code to class files">
        <mkdir dir="${classes}"/>
        <javac srcdir="." destdir="${classes}" classpathref="classpath">
            <compilerarg line="-encoding utf-8"/>
        </javac>
    </target>

    <target name="jar" depends="compile" description="create a Jar file for the application">
        <mkdir dir="${jar}"/>
        <jar destfile="${jar}/App.jar">
            <zipgroupfileset dir="${libsSrc}" includes="*.jar"/>
            <fileset dir="${classes}" includes="**/*.class"/>
            <manifest>
                <attribute name="Main-Class" value="com.top.Class_1"/>
                <attribute name="Class-Path" value="${mf.classpath}"/>
            </manifest>
        </jar>
    </target>

</project>

Кажется, помогает, но линия;

<compilerarg line="-encoding utf-8"/>

кажется, ничего не делает, у меня есть несколько текстовых файлов, содержащих символы в кодировке UTF-8, которые считываются в строки и отображаются, но не отображаются должным образом; dσ/dΩ отображается как dÃ/d©. Я спрошу это в еще один вопрос однако.

person Neilos    schedule 03.01.2012
comment
Я не понял вашего вопроса, можете ли вы запускать свои муравьиные задачи??? что происходит, когда вы запускаете ant compile ?? - person Rajesh Pantula; 03.01.2012
comment
Я фактически решил все проблемы, связанные с этим вопросом, я отредактировал (и могу отредактировать еще немного) исходный вопрос, чтобы сделать его более ясным. - person Neilos; 03.01.2012