2011-04-15 134 views
0

我有一個螞蟻腳本,用於清理,編譯,jar,javadocs等。我在Eclipse中也有3個項目:一個庫和兩個項目來測試它。在Eclipse中使用Apache Ant修改項目構建路徑

在這兩個測試項目的構建路徑中,我定義爲位於庫項目中的庫jar作爲外部jar。

庫jar的版本是jar名稱,即library-0.1.jar。在ant腳本我有庫的版本屬性:

<property name="project_version" value="0.1"/> 

因此,要改變我的版本修改此屬性,然後再次運行該腳本。正如你可能推論的那樣,這會在其他兩個項目中產生依賴性錯誤,因爲它們仍然會指向一箇舊的文件庫-0.1.jar。

如何自動更改Eclipse中其他兩個項目的構建路徑? Apache ant可以用特定的標籤來做到這一點?

謝謝。

回答

0

編輯:使用下面你將能夠使用Ant來編譯,但是Eclipse將顯示您在Project Explorer的依賴錯誤的方法,因爲你沒有定義任何外部jar在構建路徑面板中。爲了解決這個問題,你必須編輯.classpath文件,你將在項目的根看,並添加以下行:

<classpathentry kind="lib" path="../Library/bin"/> 

其中圖書館是圖書館的項目和料箱的類文件夾中的文件夾。




解決

我必須寫爲2個項目的ant腳本,並用腳本設置類路徑,而不是與Eclipse IDE:

<path id="build-classpath"> 
    <fileset dir="${dist}"> 
     <include name="${project_name}-${project_version}.jar"/> 
    </fileset> 
</path> 

$ {dist}是jar庫的文件夾,類似於「../Library/dist」,其中Library是項目的名稱。
$ {PROJECT_NAME}和$ {} project_version是從version.properties加載文件,再次被存儲在 「../Library」:

<property file="..Library/version.properties"/> 

文件version.properties只包含:

project_name=LibraryName 
project_version=0.1 

然後,編譯時添加的類路徑...

<target name="compile" depends="clean, makedir"> 
    <javac srcdir="${src}" destdir="${bin}"> 
     <classpath refid="build-classpath"/> 
    </javac> 
</target> 

的REFID值是前面定義的路徑ID。

2

使用sed,例如, (未測試):

 
version=2 
sed s/value="\d+"/value="$version"/g build.xml 
4

請參考所有構建文件中包含變量的版本,例如

<include name="my-${version}.jar"/> 

現在,當您執行構建時,可以使用explict版本執行以符合您的要求,例如,

ant -Dversion=1.3 

或者,你可以加載相同的屬性在每個構建腳本文件來加載版本屬性

<property file="version.properties"> 

請注意,如果後者去,你應該刪除的財產申報(從你在上面發帖)明確地設置了值。要麼或先加載屬性文件。 ....

+0

我已經使用version變量創建了一個version.properties文件,並用於庫構建腳本(使用屬性,而不是屬性),但是我在測試項目中遇到了問題,包括jar。 「include」標籤是否添加了jar來構建路徑? – 2011-04-15 13:11:19

+1

是的,我只是猜測你會在構建文件中使用構建classpath到你的jar中,但是也許你做的不同。在任何情況下,在依賴項目的構建文件中引用庫jar的地方,都要使用該變量。 – sudocode 2011-04-15 14:05:57