2012-11-27 147 views
0

在編譯階段之前是否可以構建一個模塊並運行它?這裏是細節。在編譯階段之前構建並運行maven模塊

我有這個安裝項目:

<modules> 
    <module>preprocessor</module> 
    <module>module1</module> 
    <module>module2</module> 
    ... more ... 
</module> 

預處理模塊包含一些代碼,將處理其他代碼:生成其他模塊裏面的一些代碼和數據。我用'mvn exec:java'從終端運行它,並且工作正常。

但是,我想自動化這個東西,所以當其他開發者想編譯/安裝整個樹時,maven首先編譯預處理器,用一些參數執行它並繼續編譯階段。

另外,當'mvn install'運行時,是否可以指示maven不安裝此預處理器模塊?

謝謝。

+0

您可以發表評論,你不想作爲一個臨時工作圍繞POM文件的模塊。 – muruga

+0

是的,但這些模塊不會在編譯階段進行編譯。我假設你將這個'預處理'模塊作爲目標,但是他必須進行編譯,以便可以完成預處理。 –

+0

也許你可以提供關於預處理器模塊的更多細節,這將使得提供更好的提示成爲可能。 – khmarbaise

回答

0

首先,如果您有一種類似的發生器,聽起來像這樣......您需要在生成資源生命週期階段運行它,或者如果它真的需要在生成源生命週期中編譯代碼, cylce。 一個非常重要的事情是在預處理器模塊中定位代碼,並且不要將結果放到其他模塊中。 如果您需要在其他模塊中使用生成的信息,則應將其放入資源文件夾中,該文件夾將作爲可在構建過程中生成的jar的一部分自動提供。 生成的jar可以被其他模塊簡單地用作依賴項。

+0

謝謝!這聽起來很合理......但是如何告訴maven在生成資源階段進入預處理文件夾,編譯java代碼並繼續階段?編譯階段之前是否生成資源運行? –

+0

編譯Java代碼應該由maven-compiler-plugin完成,而不是由您的插件完成。您的插件/任務等應該簡單地創建代碼到目標/生成代碼?對此我不是100%肯定的。可能你可以看看antlr3插件嗎? – khmarbaise

+0

Aaaa也許我聽起來很混亂......最終目標是Maven在全局生成資源階段(在項目根目錄中調用)下降到預處理器文件夾並調用編譯階段,以便它可以編譯預處理器代碼;在此之後,讓Maven調用預處理器,生成資源並繼續編譯其餘代碼。 這可能嗎? –

0

看一看的Maven插件http://code.google.com/p/java-comment-preprocessor/允許使Java代碼的預處理

+0

謝謝。這是一個非常整潔的項目,我意識到它(我假設你是作者),但沒有接受它,因爲我需要與Java代碼交互的能力。但是我肯定會把它放在我的工具箱中,因爲它解決了我在Java中討厭的主要問題:缺少預處理器:) –

相關問題