2014-09-10 93 views
0

设置:ANT - 如何追加编译的类类路径的动态

A计划 - 不依赖纯Java项目。

项目B - 纯Java的项目依赖于项目A.

过程:

我在每个项目根目录和主脚本构建项目脚本来运行他们两个,在正确的顺序,首先是项目A,然后是项目B.脚本输出是相对于每个项目的路径。

该脚本就好了A计划,但是当涉及到项目B它忽略了项目A.

类输出使用Ant,是有办法加上“动态”到编译classpath之前的编译项目的输出?

或者,除了明确提供项目B类项目A的输出路径外,是否可以采取任何行动?

回答

0

好的,所以这花了一堆黑客。

首先使用add ant-contrib to your ant你可以从here下载它。

然后我在我的主要ant脚本中声明了一个var而不是属性。 在编译宏中,我将它作为类路径传递给javac。 编译完成后,我将新的类输出文件夹附加到classpath 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>