java - Ant build.xml 配置与外部库和 Java 属性文件配合使用时出现问题

标签 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 属性文件生成器.properties 来构建和运行我的项目

最佳答案

要将您的generator.properties文件包含在.jar文件中,请在构建.jar时添加您的resources目录:

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

由于您当前正在构建一个“fat jar”(通过直接将库 .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”目标依赖于“compile”,因为它取决于可用的已编译类。

我还建议您的默认目标“main”避免调用“clean”目标。您不应该在每次构建之前进行清理;这违背了 Ant 最有用的优点之一,即仅更新需要更新的内容的能力。您应该仅在需要时使用 ant cleancompile 或简单的 ant clean 之类的命令进行清理。

请注意,一旦“dist”依赖于“compile”,并且一旦“main”不再调用“clean”,您只需删除“main”目标并将项目的默认目标更改为“dist”即可。仔细想想,这是有道理的:默认操作是构建和打包应用程序。

关于java - Ant build.xml 配置与外部库和 Java 属性文件配合使用时出现问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45133071/

相关文章:

java - Google Drive API - 通过文件 ID 检查文件是否存在

java - Implements 只能与接口(interface)一起使用吗?

java - 速度和忽略java方法返回

java - Java中删除XML文件中的节点

scrum - 为什么 scrum 在计算速度时使用平均值而不是中位数?

java - 使用速度模板打印 JasperReports

java - 我可以在 Eclipse 中显示 Ant 构建文件的路径信息吗?

java - Java中多个MVC Controller 共享的单例资源

java - 使用来自缓存的输入流在 Android 上解析 XML

java - 在 Recycler View 中展开/折叠卡片有时会导致空白和绘图错误