2016-05-19 9 views
1

Ich versuche, Json Jar zu meinem Travis-CI Ameisen Build hinzuzufügen, ich habe auch Fragen in stackoverflow überprüft diese Frage ist vielleicht doppelt, aber ich kann damit nicht umgehen. Wenn travis meinen Code kompiliert, kann es nicht JSON, ich denke, ich mache etwas falsch in Build-XML. Bitte hilf mir, ich bin neu bei Ant.Jar zur Ant hinzufügen Build

<project name="Hello" basedir="." default="main"> 
     <property name="dir.src"  value="src"/> 
     <property name="dir.build" value="build"/> 
     <property name="dir.classes" value="${dir.build}/classes"/> 
     <property name="dir.jar"  value="${dir.build}/jar"/> 

     <property name="main-class" value="TestConsole"/> 
     <target name="clean"> 
      <delete dir="${dir.build}"/> 
     </target> 

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

      <target name="jar" depends="clean, compile"> 
       <mkdir dir="${build}/${jar}" /> 
       <jar destfile="src/json-simple-1.1.1.jar" basedir="${build}/${classes}"> 
       <manifest> 
        <attribute name="Main-Class" value="MainClass" /> 
       </manifest> 
       </jar> 
     </target> 

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

     <target name="clean-build" depends="clean,jar"/> 
     <target name="main" depends="clean,run"/> 
    </project> 
+0

Können Sie genaue Fehler zeigen, wenn Build fehlschlägt? – Rao

Antwort

0

Hier ist meine Lösung

<project name="Hello" basedir="." default="main"> 
<property name="dir.src"  value="src"/> 
<property name="dir.build" value="build"/> 
<property name="dir.classes" value="${dir.build}/classes"/> 
<property name="dir.jar"  value="${dir.build}/jar"/> 
<property name="dir.lib"  value="."/> 
<property name="main-class" value="TestConsole"/> 
<target name="clean"> 
    <delete dir="${dir.build}"/> 
</target> 

//Edited part 

<target name="compile"> 
<mkdir dir="${dir.classes}"/> 
<javac srcdir="${dir.src}" destdir="${dir.classes}"> 
    <classpath> 
      <fileset dir="${dir.lib}"> 
       <include name="**/*.jar" /> 
      </fileset> 
    </classpath> 
    </javac> 
</target> 

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

//Edited part ends here 

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

<target name="clean-build" depends="clean,jar"/> 
<target name="main" depends="clean,run"/> 
</project> 
1

Dies ist, weil Java Compiler ist nicht in der Lage, erforderliche Klassen für die Kompilierung zu finden. Sie müssen alle erforderlichen Dateien über den Klassenpfad javac zur Verfügung stellen.

Also in Ihrem Build xml müssen Sie Classpath wie folgt angeben:

<path id="project.class.path"> 
    <pathelement location="bin/"/> <!-- to put a folder in class path --> 
    <pathelement location="lib/helper.jar"/> <!-- to put a jar in class path --> 
    <pathelement path="${java.class.path}/"/> 
    </path> 

Und dann diese Klasse Pfad verwenden, während javac wie folgt ausführen:

<javac srcdir="${dir.src}" destdir="${dir.classes}"> 
    <classpath refid="project.class.path"/> 
</javac> 

Ebenso haben Sie es zu tun während der Ausführung Ihrer Klasse mit java

Weitere Informationen finden Sie unter writing a simple build file.

+1

danke für Ihre Hilfe btw Ich finde eine Lösung ohne Verwendung von Pfad-ID. – phantom

+1

Bitte fügen Sie das als eine Antwort hinzu, damit es jemand anderem in derselben Situation helfen kann. Prost – Sanjeev

+0

Aber auch deine Lösung ist richtig :) – phantom