2016-07-23 14 views
0

Ich möchte JAR-Datei meines Projekts mit Jenkins mit Ant-Skripten zu machen, aber mein Skript kompilieren aus "src" Ordner nur Dateien mit der Erweiterung .jar, ich möchte alle kompilieren diese Dateien zu meinem Glas, wie geht das?Ant jar Befehl kompilieren nur Dateien mit der Erweiterung .jar

Ordner-Struktur auf jenkins Server:

+ /src 
    + /net 
     + /xxx   [there a lot of java classes] 
    + plugin.yml 
    + /resources 
    + /structs 
+ /lib     [There is my java lib folder] 
+ /build 
+ build.xml 

Ant-Skript:

<project name="BCCore" basedir="." default="main"> 

<property name="src.dir"  value="src"/> 

<property name="build.dir" value="build"/> 
<property name="classes.dir" value="${build.dir}/classes"/> 
<property name="jar.dir"  value="${build.dir}/jar"/> 

<property name="main-class" value="net.xxx.core.BCCore"/> 


<property name="lib.dir"  value="lib"/> 

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




<target name="clean"> 
    <delete dir="${build.dir}"/> 
</target> 

<target name="compile"> 
    <mkdir dir="${classes.dir}"/> 
    <javac srcdir="${src.dir}" destdir="${classes.dir}" includeantruntime="false" classpathref="classpath"/> 
</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> 
    </jar>  
</target> 

<target name="run" depends="jar"> 
    <java fork="true" classname="${main-class}"> 
     <classpath> 
      <path refid="classpath"/> 
      <path location="${jar.dir}/${ant.project.name}.jar"/> 
     </classpath> 
    </java> 
</target> 

<target name="clean-build" depends="clean,jar"/> 

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

Wenn ich meinen ganzen Projekt baue Netbeans mit i erhalten JAR-Datei mit Gewicht ~ 4,0 MB, aber das Gewicht der Datei gebaut mit Ant auf Jenkins Server ist etwa ~ 1.6 MB, als ich bleeded Datei von Jenkins (von JdGui) im Ordner sah wurde nur Paket "net.xxx.core. ..."

+0

dies nichts mit jenkins zu tun hat. Hast du ant von der Kommandozeile aus versucht? – Jayan

+0

Ich habe gerade Build-Aktion "Invoke Ant" ohne Parameter in Jenkins (wenn ich Skript von der Befehlszeile ausführen Ergebnis war gleich wie bei Jenkins), und es ist standardmäßig "Main" Ziel ausgeführt, so dass alles, was ich denke, ist gut, denn Jar baut sich auf, aber macht mir Sorgen, dass builded jar um die Hälfte weniger Gewicht hat und innerhalb dieses Jars ** nur ** Dateien mit der Erweiterung ** .java ** sind, und es sollten andere Dateien wie "plugin.yml,/resources ... "Vermutlich habe ich etwas im Drehbuch verpasst – TheTonsOfCode

Antwort

0

fand ich Code, der mir geholfen, zu tun, was ich will:

<copy todir="${classes.dir}"> 
     <fileset dir="${src.dir}" excludes="**/*.java"/> 
</copy> 

ich hinzugefügt Ziel „kompilieren“:

<target name="compile"> 
    <mkdir dir="${classes.dir}"/> 
    <javac srcdir="${src.dir}" destdir="${classes.dir}" debug="true" includeantruntime="false" classpathref="classpath"/> 
    <copy todir="${classes.dir}"> 
     <fileset dir="${src.dir}" excludes="**/*.java"/> 
    </copy> 
</target>