2010-11-15 124 views
77

從Eclipse,我發現我可以輕鬆地導出我的項目的Ant構建文件。它提供了第三方庫和一些基本目標的參考。我從我的全局構建文件中使用它。唯一讓我困擾的是,如果項目結構中的某些內容被修改了(例如添加一個新的第三方庫),我們必須考慮(有時可能很難!)重新生成build.xml文件。 我想知道是否有人在這裏知道自動更新的方法。「自動」我的意思是不需要明確地要求Eclipse在每次需要時重新生成它。我不知道什麼可能是觸發,雖然...任何方式從Eclipse自動生成ant build.xml文件?

任何想法或知識嗎?

謝謝!

MJ

+1

您是否嘗試過尋找添加自定義生成器的步驟? – 2010-11-15 17:55:32

+0

我不確定我該如何去做這件事。我看過項目建設者。我認爲那裏可能有些東西......我可能會添加一個構建器,一旦主「Java Builder」完成,它將生成build.xml文件。這就是你所說的建造者步驟嗎?我可以嘗試這個,如果我有任何線索有關編程調用項目上的導出ant構建文件操作。我懷疑這甚至是可能的。 – Joanis 2010-11-15 18:57:34

+0

你好M.Joanis,你終於找到了什麼解決方案?我試圖達到同樣的目的,所以如果你能分享你的發現,那將會很好。 – theDmi 2011-07-08 05:11:27

回答

70

在Eclipse項目,然後「出口」,那麼「常規」,然後「Ant構建文件」單擊鼠標右鍵。我不認爲可以自定義輸出格式。

+0

對不起,我添加了一個關於「自動」的註釋。就像我說的,我知道我可以輕鬆生成並導出這樣的文件。讓我困擾的是,每次需要完成時都要告訴Eclipse重新生成它。我會感興趣的方式來自動觸發我的項目「導出ant構建文件」行動。我發現輸出格式沒有問題(到目前爲止)。 – Joanis 2010-11-15 16:50:07

+0

然後我不認爲它在標準的Eclipse中是可能的。也許有些插件允許它雖然... – Guillaume 2010-11-15 16:56:56

+1

這似乎是爲web項目生成build.xml,但不是爲耳朵。我可以自動爲ear文件生成build.xml嗎? – 2012-01-26 13:19:04

2

查看項目中的.classpath文件,該文件可能包含大部分您想要的信息。最簡單的選擇可能是在生成過程中將自己的「build.xml導出」(即process .classpath)轉換爲新的build.xml,然後用螞蟻子任務調用它。

解析一個小小的XML聽起來比鉤入Eclipse JDT更容易。

+1

我絕對同意,解析XML文件比編寫Eclipse插件或類似的東西更吸引人。你的建議很有趣,但不是.classpath文件「一點點」簡潔嗎?我提供5條路徑,就是這樣。導出的Ant構建文件的優點在於它不僅提供了構建整個事物的目標,還提供了允許運行JUnit測試的正確目標。我會記住這一點。 – Joanis 2010-11-19 21:36:04

+0

好點。我希望Eclipse在確定在構建文件中生成什麼目標時也考慮到「項目性質」。您可以檢查Eclipse如何生成build.xml,因爲它在內部使用ant本身。但是這會讓你回到不得不做一個「科學項目」來理解這些Eclipse內部。也許Builder步驟確實是正確的選擇。 – 2010-11-22 20:29:35

5

我一直在嘗試自己做同樣的事情。我發現的是,「Export Ant Buildfile」在org.eclipse.ant.internal.ui.datatransfer.AntBuildfileExportPage.java文件中被啓動。它位於org.eclipse.ant.ui插件中。

要查看源代碼,請使用插件開發透視圖並打開插件視圖。然後右鍵單擊org.eclipse.ant.ui插件並選擇導入爲>源項目。

我的計劃是創建一個Java程序,以編程方式啓動ant構建文件生成,並在每次構建ant文件時將其添加到Ant文件中,方法是將ant文件添加到項目的構建器中(右鍵單擊項目的首選項,在建設者標籤下)。

+2

看起來像一條非常有前途的道路。您似乎對Eclipse插件體系結構有很好的理解。如果您有任何進展,我們將隨時向您通報我們的情況。謝謝! – Joanis 2011-09-26 19:48:11

+0

更新:不幸的是,我的工作沒有給我足夠的時間來實現它。相反,它變成了一種團隊儀式,每次我們添加新的依賴時,團隊都會重新導出構建文件。這並不理想,但它是自我實施的,因爲如果有人試圖在服務器上執行構建而不導出構建文件,它通常會破壞。 – 2013-11-20 15:22:48

1

我是向Eclipse提供Ant導出過濾器的人。我添加了自動導出功能,但僅限於我的個人插件eclipse2ant,我仍然維護它以協調錯誤修復。

不幸的是,我沒有時間將它合併到官方的Eclipse版本。

2

如果你需要的只是類路徑條目,那麼我使用類似下面的方法來使用eclipse構建路徑。

<xmlproperty file=".classpath" collapseAttributes="true" delimiter=";" /> 

然後設置值路徑

<path id="eclipse.classpath"> 
    <pathelement path="${classpath.classpathentry.path}"/> 
</path> 


<target name="compile" depends="init"> 

    <javac srcdir="${src}" destdir="${build}" updatedProperty="compiled"> 
     <classpath refid="eclipse.classpath"/> 
    </javac> 
</target> 
4

我有同樣的問題,我們的工作環境是基於Eclipse的Java項目,我們需要自動建立一個ANT文件,以便我們可以使用持續集成服務器(在我們的例子中是Jenkins)。

我們推出了我們自己的Eclipse的Java Ant的工具,現在可以在GitHub上:

ant-build-for-java

要使用它,請致電:

java -jar ant-build-for-java.jar <folder with repositories> [<.userlibraries file>] 

第一個參數是文件夾與存儲庫。它將遞歸搜索文件夾中的任何.project文件。該工具將在給定文件夾中創建一個build.xml

可選地,第二參數可以是導出的.userlibraries文件,從Eclipse中,在需要時的任何項目的使用Eclipse用戶庫。該工具僅在使用相對路徑的用戶庫中進行了測試,這就是我們在回購中使用它們的方式。這意味着項目所需的JAR和其他歸檔文件位於Eclipse項目中,並從那裏引用。

該工具僅支持從其他Eclipse項目和Eclipse用戶庫的依賴關係。

0
  • 選擇文件>從主菜單中導出(或右鍵點擊項目名稱,並選擇導出>導出...)。
  • 在導出對話框中,選擇常規>螞蟻構建文件如下: enter image description here

  • 點擊下一頁。在「生成Ant構建文件」屏幕中:

    • 檢查列表中的項目。
    • 取消選中選項「創建目標使用Eclipse編譯器來編譯項目」 - 因爲我們要創建一個構建文件是獨立的Eclipse。
    • 離開Ant構建爲默認名稱:build.xml文件

enter image description here

  • 點擊完成,Eclipse會如下生成項目的目錄下的文件build.xml
  • 雙擊文件在Ant編輯器打開它的內容: enter image description here

source