2013-02-21 62 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