2013-04-12 2 views
3

Я немного новичок в использовании муравья, и в настоящее время, как я делаю ant-скрипты, вы автоматически генерируете их через eclipse, чтобы создать runnable jar's. Проблема заключается в том, что он только считывает каталог bin. В результате, если бы я изменил файл java src, я бы не видел изменений, реплицированных в сборке муравьев. Что мне нужно добавить к моему скрипту ant? Ниже приведен пример сценария ниже:Использование муравья для компиляции Java-кода

<?xml version="1.0" encoding="UTF-8" standalone="no"?> 
    <project default="create_run_jar" name="Create Runnable Jar for Project poodah"> 
    <!--this file was created by Eclipse Runnable JAR Export Wizard--> 
    <!--ANT 1.7 is required          --> 
    <target name="create_run_jar"> 
     <jar destfile="../lib/TestMaster.jar" filesetmanifest="mergewithoutmain"> 
      <manifest> 
       <attribute name="Main-Class" value="test.startup.TestMaster"/> 
       <attribute name="Class-Path" value="."/> 
      </manifest> 
      <fileset dir="../test/bin"/> 
     </jar> 
    </target> 
    </project> 

Я попытался прочесть часть документации, но это было немного запутанно.

+0

Вы должны знать, что Eclipse, автоматически компилирует измененный исходный код (/ src) и помещает его в/bin; он даже скопирует другие (не-Java) файлы из/src в/bin. Таким образом, папка/bin всегда обновляется. Это до тех пор, пока вы вносите изменения в Eclipse. Кажется, что вы пытались сделать некоторые изменения вне Eclipse. В этом случае вам нужно иметь автономный файл build.xml, как это было предложено ниже. – Cebence

ответ

8

Вы должны компилировать свои источники с задачей JAVAC муравья

Предположим, ваша структура проекта:

java 
    your 
    package 
     structure 
     SomeClass.java 
lib 
    log4j.jar 
    guava-14.jar 
test 
    bin 
<?xml version="1.0" encoding="UTF-8" standalone="no"?> 
<project default="create_run_jar" name="Create Runnable Jar for Project poodah"> 
    <!--this file was created by Eclipse Runnable JAR Export Wizard--> 
    <!--ANT 1.7 is required          --> 
    <target name="create_run_jar" depends="compile"> 
     <jar destfile="../lib/TestMaster.jar" filesetmanifest="mergewithoutmain"> 
      <manifest> 
       <attribute name="Main-Class" value="test.startup.TestMaster"/> 
       <attribute name="Class-Path" value="."/> 
      </manifest> 
      <fileset dir="../test/bin"/> 
     </jar> 
    </target> 

    <target name="compile"> 
    <javac srcdir="java" destdir="../test/bin" includes="**/*.java" target="1.6"> 

     <classpath refid="classpath.base" /> 
    </javac> 

    </target> 
    <!-- Libraries on which your code depends --> 
    <path id="classpath.base">                               
    <fileset dir="lib">                               
     <include name="**/*.jar" />                           
    </fileset>                                 
    </path> 
</project> 
0

Добавьте вашу цель компиляции в зависимости

<target name="create_run_jar" depends="compile"> 
    <jar destfile="../lib/TestMaster.jar" filesetmanifest="mergewithoutmain"> 
     <manifest> 
      <attribute name="Main-Class" value="test.startup.TestMaster"/> 
      <attribute name="Class-Path" value="."/> 
     </manifest> 
     <fileset dir="../test/bin"/> 
    </jar> 
</target> 
</project> 

Compile целевым

<target name="compile" depends="" description="compile the java source files"> 
<javac srcdir="." destdir="../test/bin"> 
    <classpath> 
     <fileset dir="${lib}"> 
      <include name="**/*.jar" /> 
     </fileset> 
     </classpath> 
</javac> 
Смежные вопросы