2008-10-09 60 views
15

我有很多需要自定義預處理的Java源代碼。我想擺脫它,但現在不可行,所以我堅持下去。鑑於我有一個不應該存在的不幸問題,我該如何使用maven解決它?我想用一個maven替換一個基於python的編譯系統,所以一次只能改進一次,修復非標準的源代碼比較困難,並且會在以後出現。)作爲maven構建的一部分預處理源代碼

(http://support.microsoft.com/kb/(http://support.microsoft.com/kb/)

是否有可能使用任何現有的Maven插件在編譯期間實際更改源文件? (顯然保留原始的未處理的代碼)

要清楚的是,通過預處理,我的意思是預處理與天線或C編譯器預處理代碼相同,並且通過自定義,我的意思是它完全是專有的,看起來什麼也沒有完全像C或天線預處理一樣。

回答

9

這是非常可行的,我過去做過非常相似的事情。

從我的一個項目,其中我用antrun插件來執行外部程序來處理源的一個例子:

<build> 
    <plugins> 
    <plugin> 
     <groupId>org.apache.maven.plugins</groupId> 
     <artifactId>maven-antrun-plugin</artifactId> 
     <executions> 
     <execution> 
      <id>process-sources</id> 
      <phase>process-sources</phase> 
      <configuration> 
      <tasks> 
       <!-- Put the code to run the program here --> 
      </tasks> 
      </configuration> 
      <goals> 
      <goal>run</goal> 
      </goals> 
     </execution> 
     </executions> 
    </plugin> 
    </plugins> 
</build> 

記下我指明這個運行階段中的標籤。 Maven的生命週期文檔是here。另一種選擇是實際編寫自己的Maven插件。這有點複雜,但也是可行的。您仍然可以按照我在此處記錄的內容進行配置。

+0

這是非常有用的,謝謝。我認爲我正在努力的部分是如何將代碼處理爲該代碼的副本,然後讓maven編譯副本而不是原始代碼。我想也許我需要更好地理解maven基礎知識。 – izb 2008-10-20 09:44:36

2

Maven插件可以在預編譯的時候掛鉤構建過程是的,至於是否現有的將幫助我不知道。

雖然幾年前我寫了一個Maven插件作爲大學項目的一部分,雖然當時文檔有點缺乏,但它並不複雜。所以你可以看看自己滾動,應該有大量的開源項目,你可以從中獲取想法或代碼(例如我們的BSD許可證......)