2016-05-19 2 views
1

Я пытаюсь добавить json jar в мой сборщик Travis-CI, я также проверил вопросы в stackoverflow, этот вопрос может быть дубликат, но я не могу справиться с ним. Когда travis компилирует мой код, он не может JSON, я думаю, что я делаю что-то не так в build xml. Пожалуйста, помогите мне, я новичок в Ant.Добавление Jar To Ant 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

Можете ли вы показать точное сообщение об ошибке при сбое сборки? – Rao

ответ

0

Вот мое решение

<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

Это связано с тем, что java-компилятор не может найти необходимые классы для компиляции. Вам необходимо сделать все необходимые банки до javac с помощью класса-пути.

Так что в вашем построения XML вам необходимо указать путь к классу так:

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

И затем использовать этот класс путь во время выполнения javac так:

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

Точно так же вы должны сделать это во время работы вашего класса с использованием java

Для получения дополнительной информации см. writing a simple build file.

+1

благодарю вас за помощь. Btw Я нахожу решение без использования идентификатора пути. – phantom

+1

Пожалуйста, добавьте это как ответ, чтобы он мог помочь кому-то еще в той же ситуации. Cheers – Sanjeev

+0

Но и ваше решение тоже правильно :) – phantom

Смежные вопросы