gpt4 book ai didi

java - Apache Ant {编译 javac srcdir} 不存在

转载 作者:行者123 更新时间:2023-12-02 06:01:41 28 4
gpt4 key购买 nike

我是 apache ant 的新手,目前正在开发 apache Ant 项目。我刚刚开始,将项目导入工作区并尝试运行 build.xml。我将原始项目附带的所有库添加到构建路径中。我遇到以下问题。请其他人编写代码,我应该改进它。与此相关的目录存在于项目目录中。

BUILD FAILED
C:\workspace\MyApp\build.xml:83: srcdir "C:\workspace\MyApp\${compile.javac.srcdir}" does not exist!

错误代码引用了 build.xml 文件的以下部分

<target name="compile.default" depends="init">
<javac fork="yes" srcdir="${compile.javac.srcdir}" destdir="${compile.javac.destdir}" includes="${compile.javac.include}" excludes="${compile.javac.exclude}" classpath="${compile.javac.classpath}" debug="${compile.javac.debug}" optimize="${compile.javac.optimize}" deprecation="${compile.javac.deprecation}" verbose="${compile.javac.verbose}">
</javac>
<copy todir="${compile.javac.destdir}">
<fileset dir="${compile.javac.srcdir}" includes="${compile.copy.include}" excludes="${compile.copy.exclude}"/>
</copy>
</target>
<target name="compile" depends="init,compile.default" description="Compile all java source">
</target>
<!--+++++++++++++++-->
<!-- lib target(s) -->
<!--+++++++++++++++-->
<target name="lib.default" depends="init,compile">

<xmlbean schema="config/schemas/validate/1.0/validate.xsd" destfile="lib/glx-beans.jar" classpath="lib/xbean.jar:lib/jsr173_1.0_api.jar" />

<jar jarfile="${lib.filename}">
<fileset dir="${lib.srcdir}" excludes="${lib.exclude}" />
</jar>



</target>

<target name="lib" depends="init,compile,lib.default" description="Create all Project Libraries">
</target>

你能告诉我我缺少什么吗?

最佳答案

${compile.javac.srcdir}没有定义。有以下几种可能性:

  • 这未在 build.xml 中定义,但是在某种属性文件中。看看你是否有类似 <property file="..."/> 的东西在你的构建脚本中。我的建议是在 build.xml 中定义所有属性。文件,并使用属性文件来覆盖这些设置。这样,开发人员在 build.xml 中需要的唯一构建文件。文件,并且不必担心设置单独的 build.porperties文件。
  • 这是在 build.xml 中定义的文件在特定任务下,但您忘记说您使用此文件的目标取决于此任务。

您可以做的事情之一是使用 -d运行 Ant 时的参数。当使用 -d 运行 Ant 时,我运行以下命令参数:

$ and -d 2>&1 | tee ant.out

然后我可以查看ant.out看看我是否没有定义该特定属性。也许我的大小写错误或拼写错误的属性名称。例如,我很可能将该属性定义为copmile.javac.srcdir,因为我不知道如何拼写。看着-d输出可以快速指出这些类型的错误。

顺便说一句,您不应该让所有任务都依赖于 init因为它们依赖于compile.default无论如何:

<target name="compile.default" depends="init">
....
</target>
<target name="compile" depends="compile.default">
....
</target>
<target name="lib" depends="compile,lib.default">
....
</target>

如果我运行目标lib ,它将看到 compile取决于compile.default这取决于init 。因此,您的构建将运行 init ,然后compile.default ,然后compile ,然后 'lib.default and finally库`。

如果初始化任务只是设置属性,您可以在任何任务之外执行此操作。然后,这些属性将在执行任何任务之前设置。这样,他们就不会被遗忘。如果您init也在创建目录,您可能想要移动那些 <mkdir/>使用该目录的任务前面的任务。例如,您可能希望将 destdir 用于 javac之前<javac/>任务。

我发现在任何任务之外分配默认属性,并在需要之前创建目录以简化 build.xml 。另外,如果用户只是编译而不是打包 jar/war/etc,那么您就不会创建一大堆未使用的目录。

关于java - Apache Ant {编译 javac srcdir} 不存在,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22615107/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com