【问题标题】:Ant build.xml not functioning properlyAnt build.xml 无法正常运行
【发布时间】:2013-10-11 10:23:05
【问题描述】:

以下是 Java 项目的 build.xml 的简化版本。它正确完成“构建”(创建正确的 .class 文件)并打印出“完成构建”。但是,它不会打印出“Starting jar”。我不明白什么?目标“jar”依赖于“build”,所以接下来应该运行它。

使用目标版本运行它。

<?xml version="1.0"?>
<project name="Project" basedir="." default="release">

    <!-- directories -->
    <property name="src.dir" location="src/main/java"/>
    <property name="cls.dir" location="private/classes"/>
    <property name="lib.dir" location="lib"/>

    <property name="jar.name" value="${ant.project.name}-${jar.ver}.jar"/>

    <target name="clean" description="Delete all generated files">
        <delete dir="${cls.dir}"/>
        <delete dir="${lib.dir}"/>
    </target>

    <target name="build" depends="clean">
        <mkdir dir="${cls.dir}"/>
        <javac
            destdir="${cls.dir}"
            nowarn="off"
            fork="yes"
            debug="on">
            <classpath>
                <path path="${run.classpath}"/>
            </classpath>
            <src path="${src.dir}"/>
        </javac>
        <echo message="Finishing build"/>
    </target>

    <target name="jar" depends="build">
        <echo message="Starting jar"/>
        <mkdir dir="${lib.dir}"/>
        <jar destfile="${lib.dir}/${jar.name}">
            <fileset dir="${cls.dir}"/>
            <fileset dir="${src.dir}" includes="**/*.properties"/>
            <fileset dir="${src.dir}" includes="**/*.xml"/>
        </jar>
    </target>

    <target name="release" depends="jar" description="Entry point">
    </target>

</project>

【问题讨论】:

  • 运行目标时使用的命令是什么?你在运行 jar 目标吗?
  • 随发布运行,jar 部分不运行。如果我用 jar 运行,那么 jar 也会运行。当我使用 release 运行时,我希望 jar 运行..
  • 尝试使用 "ant -v" 运行以获得详细输出,看看是否能给您提供线索。
  • 运行命令ant -d release。您可能希望将该输出重定向到文件。开始将向您展示它为找出依赖矩阵所做的计算。顺便说一句,你不应该让你的build 依赖于clean。您可以让 release 依赖于 clean,jar,但您希望开发人员能够在不清除所有已构建的类文件的情况下进行构建。

标签: ant build.xml


【解决方案1】:

如下更新发布目标,注意发布依赖于 build 然后 jar。即depends="build,jar" 即

    <target name="release" depends="build,jar" description="Entry point">
       <echo message="release ..."/>
    </target>

【讨论】:

  • 这完全没有区别。
  • 这行得通。试了一下就跑了。您能否澄清以下内容。什么版本的蚂蚁?您是在命令行上运行还是在 IDE 中运行?你是如何执行运行目标的?最后,您是否尝试过使用 ant -v 运行以打印详细输出?您可以发布输出以供审核吗?这些细节可能更好地帮助诊断您的问题,但是您的 ant 文件还可以吗?这是另一个问题。同样在运行之前,您是否可以单独运行 clean 并在运行任何其他目标之前验证是否删除了旧版本
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2015-01-16
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-01-15
  • 2016-11-22
  • 1970-01-01
相关资源
最近更新 更多