Ant build.xml配置的问题,以使用外部库和Java属性文件

时间:2017-07-16 20:34:11

标签: java xml velocity properties-file antbuilder

我的Ant Build Tool存在问题。 首先,在下面你可以看到我的项目结构:

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>

我不知道如何设置Ant build.xml来构建和运行我的项目与外部库和java属性文件generator.properties

1 个答案:

答案 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 compileant clean之类的命令进行清理。

请注意,一旦&#34; dist&#34;取决于&#34;编译&#34;和一次&#34; main&#34;不再打电话&#34;清洁&#34;,你可以简单地删除&#34; main&#34;定位并将项目的默认目标更改为&#34; dist&#34;。当你考虑它时,这是有道理的:默认操作是构建和打包应用程序。