Ant 循环中的Java编译问题
我试图使用Ant1.8.1执行java编译。由于这个需求,我必须在一个循环中编译大量的java源文件夹(包含java文件)。这些文件夹名称将派生自属性文件中提到的java项目。我需要从循环本身执行java编译。因此,我使用了一个macrodef,其中传递了java源代码编译所需的所有参数。本质上,我有一个主build.xml文件,从中我调用build_Compile.xml(其职责是确定要构建哪些Java项目及其相应的源文件夹,并为每个项目执行循环编译)。为了实现这一点,我使用了一个在助手文件(helper.xml)中定义的宏定义,该文件包含大量的宏定义Ant 循环中的Java编译问题,ant,Ant,我试图使用Ant1.8.1执行java编译。由于这个需求,我必须在一个循环中编译大量的java源文件夹(包含java文件)。这些文件夹名称将派生自属性文件中提到的java项目。我需要从循环本身执行java编译。因此,我使用了一个macrodef,其中传递了java源代码编译所需的所有参数。本质上,我有一个主build.xml文件,从中我调用build_Compile.xml(其职责是确定要构建哪些Java项目及其相应的源文件夹,并为每个项目执行循环编译)。为了实现这一点,我使用了一个在助手文件(
<javac srcdir="@{srcpath}"
destdir="./Temp/build/classes/"
includeAntRuntime="false"
classpath="${classpath}"
includes="${replacedartefacts}">
</javac>
然而,当我执行任务时,我得到一个错误,这意味着没有正确地找到JavaSRC路径(作为参数传递)。我注意到构建文件的路径(我的所有构建*.xml文件都位于其中)被附加在java src目录路径之前(在macrodef中作为参数传递)。我打印了传递给macrodef的参数,看起来与预期的一样。下面是我用于java源代码编译的代码片段-
<javac srcdir="@{srcpath}"
destdir="./Temp/build/classes/"
includeAntRuntime="false"
classpath="${classpath}"
includes="${replacedartefacts}">
</javac>
.....
.....
<javac srcdir="@{srcpath}"
destdir="./Temp/build/classes/"
includeAntRuntime="false"
classpath="${classpath}"
includes="${replacedartefacts}">
</javac>
对不起,说来话长。感谢您的指点/指导。谢谢。我对循环的想法有点困惑。对此,我有两种想法:
<javac srcdir="@{srcpath}"
destdir="./Temp/build/classes/"
includeAntRuntime="false"
classpath="${classpath}"
includes="${replacedartefacts}">
</javac>
- 您只有一个项目,但根据项目编译不同的源目录
- 您有一个master build.xml,它调用一组包含要编译的源文件夹的子项目
调用都依赖于已编译的类文件。在第二个场景中,您正在编译的每一组Java源代码都独立于其他源代码
<javac srcdir="@{srcpath}"
destdir="./Temp/build/classes/"
includeAntRuntime="false"
classpath="${classpath}"
includes="${replacedartefacts}">
</javac>
您不会给出所得到的错误或@{srcdir}
的值,这会有所帮助
<javac srcdir="@{srcpath}"
destdir="./Temp/build/classes/"
includeAntRuntime="false"
classpath="${classpath}"
includes="${replacedartefacts}">
</javac>
我注意到您有一个includes
参数。这是要包含的java文件列表。我还注意到这是一处房产。这意味着一旦设置,就无法更改。为什么有includes参数?为ALL项目指定要编译的特定文件集将如何影响您要执行的操作。这是像*.java
这样的值吗?这对于您正在编译的每一组源目录都是相同的吗
<javac srcdir="@{srcpath}"
destdir="./Temp/build/classes/"
includeAntRuntime="false"
classpath="${classpath}"
includes="${replacedartefacts}">
</javac>
这可能是
${basedir}
属性的问题吗?使用任务时,尤其是任务。另外,请查看Ant任务。
任务为您提供了一种轻松循环一系列目录参数的方法。
任务是为一个主构建构建子项目制定的。您到底遇到了什么错误?您好,我已经在一篇新文章“循环中的Java编译问题-续”中给出了所有细节。如果你能照我说的做,给我一些线索,那就太好了。谢谢大卫。我在一篇新的帖子“循环中的Java编译问题-续”中提供了详细信息。如果您能看一看并提供您的意见,那就太好了。
<javac srcdir="@{srcpath}"
destdir="./Temp/build/classes/"
includeAntRuntime="false"
classpath="${classpath}"
includes="${replacedartefacts}">
</javac>