2013-02-21 93 views
0

在一个ant构建脚本中,我有一个我们依赖的项目列表。我需要为编译创建一个类路径。从项目名称中创建Ant类路径

我:

included.projects=ProjectA, ProjectB 

,我需要:

included.project.classpath=../ProjectA/bin, ../ProjectB/bin 

当前代码:

<echo message="${included.projects}" /> 

<pathconvert property="included.projects.classpath" dirsep="," > 
     <map from="" to="../"/> 
     <path location="${included.projects}"/> 
    </pathconvert> 

<echo message="${included.projects.classpath}" /> 

<javac srcdir="${src.dir}" destdir="${build.dir}" includeantruntime="false" source="1.6"> 
    <classpath> 
     <pathelement path="${classpath}" /> 
     <dirset includes="${included.projects.classpath}" /> 
    </classpath> 
</javac> 

我已经明确声明试过了,但是没有奏效:

<path id="modules.classpath"> 
    <fileset dir="../ModuleA/bin" /> 
    <fileset dir="../ModuleB/bin"/> 
</path> 
<path id="libraries.classpath"> 
    <fileset dir="lib" includes="*.jar"/> 
</path> 
<javac srcdir="${src.dir}" destdir="${build.dir}" includeantruntime="false" source="1.6"> 
    <classpath refid="libraries.classpath" /> 
    <classpath refid="modules.classpath" /> 
</javac> 

我很好奇,显式声明代码有什么问题,是否可以使用逗号分隔字符串解决类路径解决方案。

+0

它是利用当'<路径ID = “modules.classpath”> \t \t \t ...' – BTakacs 2013-02-22 15:09:22

回答

1

我认为这将是简单的为您构建顶部的显式声明的classpath如下:

<path id="compile.path"> 
    <fileset dir="../ProjectA/bin" includes="*.jar"/> 
    <fileset dir="../ProjectB/bin" includes="*.jar"/> 
</path> 

使用方法如下:

<javac srcdir="${src.dir}" destdir="${build.dir}" includeantruntime="false" source="1.6"> 
    <classpath> 
     <path refid="compile.path"/> 
     <pathelement path="${classpath}" /> 
    </classpath> 
</javac> 

注:

  • 我再次读到你的问题,并意识到你没有使用其他项目构建的jar文件,是吗? ....不是一个好主意....
+0

使用你的解决方案,我需要在我的所有build.xml中放入大的'compile.path'声明,但是我想使用commmon build.xml。关于注意:当然...我为什么?我知道这是一种标准,但我没有看到我的观点:这是一个包含5-10个模块的小型项目,而且一切都在不断变化。这样我就可以保存压缩,复制到存储库和解压缩。 – BTakacs 2013-02-22 09:18:56