2017-07-16 31 views
0

我有一個Ant Build Tool的問題。 首先,下面你可以看到我的項目結構:Ant build.xml配置與外部庫和Java屬性文件一起工作的問題

Project Structure

和我的build.xml文件的內容是:

<?xml version="1.0" encoding="UTF-8"?> 
<project name="addonGenerator" default="main" basedir="."> 
<property name="projectName" value="addonGenerator"/> 
<property name="src.dir" location="src"/> 
<property name="build.dir" location="bin"/> 
<property name="dist.dir" location="dist"/> 

<target name="compile" description="compile the source "> 
     <mkdir dir="${build.dir}"/> 
     <javac srcdir="${src.dir}" destdir="${build.dir}"> 
      <classpath> 
       <pathelement path="lib/velocity-1.7.jar"/> 
       <pathelement path="lib/log4j-1.2.16.jar"/> 
      </classpath> 
     </javac> 
</target> 

<target name="dist" description="package, output to JAR"> 
    <mkdir dir="${dist.dir}"/> 
    <jar jarfile="${dist.dir}/${projectName}.jar" basedir="${build.dir}"> 
     <zipgroupfileset dir="lib" includes="velocity-1.7.jar" /> 
     <zipgroupfileset dir="lib" includes="log4j-1.2.16.jar" /> 
     <manifest> 
      <attribute name="${projectName}" value="main"/> 
      <attribute name="Main-Class" value="main.java.AddonGenerator"/> 
     </manifest> 
    </jar> 
</target> 

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

    <target name="main" depends="clean, compile, dist"/> 
</project> 

我不知道如何安裝螞蟻的build.xml使用外部庫和java屬性文件生成並運行我的項目generator.properties

回答

1

要將您的generator.properties文件包含在.jar文件中,請在構建.jar時添加resources目錄:

<jar jarfile="${dist.dir}/${projectName}.jar" basedir="${build.dir}"> 
    <fileset dir="src/main/java/resources"/> 

既然你正在建設一個「胖罐子」(直接包括您的庫.jar文件在你的應用程序的.jar的內容),你可以通過簡單地調用您的.jar文件運行。這樣的目標顯然需要要構建的.jar文件,所以是有意義的依賴於「DIST」目標:

<target name="run" depends="dist"> 
    <java jar="${dist.dir}/${projectName}.jar"/> 
</target> 

在另一方面,我不認爲你想通過src作爲源目錄,除非你的類實際上聲明瞭'package main.java;'(他們不應該這樣做)。你應該通過你的包的實際根javac任務:

<property name="src.dir" location="src/main/java"/> 

你也應該讓「DIST」目標依賴於「編譯」,因爲,嗯,這取決於是否有可用的編譯的類。

我也建議你的默認目標「主」,避免調用「乾淨」的目標。你不應該在每一次構建之前清理它;這打敗了Ant最有用的好處之一,即只更新需要更新的東西的能力。您只能在需要時使用ant clean compileant clean等命令進行清理。請注意,一旦「dist」取決於「編譯」,並且一旦「main」不再調用「clean」,您可以簡單地刪除「main」目標並將項目的默認目標更改爲「dist」。當你考慮它時,這是有道理的:默認的操作是構建和打包應用程序。