设定:
项目A - 没有依赖项的纯Java项目。
项目B - 纯Java项目依赖于项目A.
过程:
我在每个项目根目录和一个主脚本中都有一个构建项目脚本,以正确的顺序运行它们,首先是项目A,然后是项目B.脚本输出是相对于每个项目的。路径。
该脚本适用于项目A,但是当涉及到项目B时,它会错过项目A的类输出。
使用ANT,有没有办法在编译类路径中添加"动态" 以前编译项目的输出?
或者,除了明确向Project B提供项目A的类输出路径之外,我可以采取任何行动吗?
答案 0 :(得分:0)
好的,所以这需要一堆黑客攻击。
首先使用add ant-contrib to your ant,您可以从here下载。
然后我在主蚂蚁脚本中声明了var而不是属性。 在编译宏中,我将它作为类路径传递给javac。 编译完成后,我将新类输出文件夹附加到类路径var并调用下一个编译。
祝你好运。编译脚本:
<?xml version="1.0"?>
<project name="PDF Test Client" default="main" basedir=".">
<taskdef resource="net/sf/antcontrib/antlib.xml" />
<macrodef name="Compile">
<attribute name="ProjectName" default=" -- set aname to a 'ProjectName' property --" />
<attribute name="ProjectRootDir" default="." />
<attribute name="SourceDir" default="@{ProjectRootDir}/src" />
<attribute name="OutputDir" default="@{ProjectRootDir}/output" />
<attribute name="BuildDir" default="@{OutputDir}/bin" />
<attribute name="ClassesDir" default="@{BuildDir}/classes" />
<sequential>
<echo message="Compiling... @{ProjectName}" />
<mkdir dir="@{ClassesDir}" />
<javac srcdir="@{SourceDir}" destdir="@{ClassesDir}" classpath="${ClassPathFolders}" includeantruntime="true" />
<var name="ClassPathFolders" value="${ClassPathFolders}; @{ClassesDir}" />
<echo message="-" />
</sequential>
</macrodef>
<target name="main">
</target>
</project>