2016-07-23 97 views
0

我想用Jenkins使用Ant腳本來製作我的項目的jar文件,但是我的腳本只從「src」文件夾編譯擴展名爲.jar的文件,我想編譯所有這些文件到我的jar中,該怎麼做?Ant jar命令只編譯擴展名爲.jar的文件

文件夾結構,在詹金斯服務器:

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

Ant腳本:

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

當我建立我的整個使用項目的NetBeans我與重量〜4.0 MB JAR文件,但Jenkins服務器上用Ant構建的文件重量大約爲〜1.6 MB,當我從Jenkins(由JdGui)在文件夾查看builded文件時,文件夾中只有包「net.xxx.core ...」

+0

此無關與詹金斯。你從命令行嘗試螞蟻嗎? – Jayan

+0

我剛剛在Jenkins中添加了Build Action「Invoke Ant」(沒有參數)(當我從命令行運行腳本時,結果與Jenkins一樣),並且執行了默認的「main」目標,所以我認爲是好的,因爲Jar正在構建,但是擔心構建Jar的時間減少一半,並且該Jar內部只有** **擴展名爲.java **的文件,並且應該有其他文件,如「plugin.yml,/ resources ......「我可能錯過了我認爲的腳本 – TheTonsOfCode

回答

0

我發現代碼,幫我做我想做什麼:我添加它的目標「編譯」

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

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