我的Ant Build Tool存在问题。 首先,在下面你可以看到我的项目结构:
我的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>
我不知道如何设置Ant build.xml来构建和运行我的项目与外部库和java属性文件generator.properties
答案 0 :(得分:1)
要在.jar文件中包含generator.properties文件,请在构建.jar时添加resources
目录:
<jar jarfile="${dist.dir}/${projectName}.jar" basedir="${build.dir}">
<fileset dir="src/main/java/resources"/>
由于您当前正在构建一个“胖罐”(通过直接在您的应用程序.jar中包含库.jars的内容),您可以通过简单地调用.jar文件来运行。这样的目标显然需要构建.jar文件,因此依赖于&#34; dist&#34;目标:
<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"/>
你也应该制作&#34; dist&#34; target取决于&#34; compile&#34;,因为,它取决于编译类的可用性。
我还建议你的默认目标&#34; main&#34 ;,避免调用&#34; clean&#34;目标。在每次构建之前都不应该清理;这打败了Ant最有用的好处之一,即只更新需要更新的东西的能力。您应该只在需要时使用ant clean compile
或ant clean
之类的命令进行清理。
请注意,一旦&#34; dist&#34;取决于&#34;编译&#34;和一次&#34; main&#34;不再打电话&#34;清洁&#34;,你可以简单地删除&#34; main&#34;定位并将项目的默认目标更改为&#34; dist&#34;。当你考虑它时,这是有道理的:默认操作是构建和打包应用程序。