2010-03-13 54 views
3

我正在寫一個maven 2插件,我想排除所有與我使用的源存儲庫相關的java文件,這是BitKeeper。這些文件存在於名爲SCCS的目錄中。到目前爲止,我一直沒有成功。開發maven插件,如何排除bitkeeper文件

當我使用排除數據添加maven-compile-plugin時,它會起作用(BitKeeper文件被排除),如果我執行mvn compiler:compile。但是這對編譯階段沒有約束力。因此,當我運行mvn compile時,它試圖編譯一個特定於源代碼控制的java文件。任何幫助或指針讚賞。

另一件需要注意的事情:如果我將包裝從「maven-plugin」更改爲「jar」,這當然由於這是我正在嘗試編寫的maven插件,所以我無法永久完成。

對不起,如果這是在別處回答。我已經在這裏和通過maven文檔環顧了幾個小時,但是關於這個主題的一切似乎都與編寫將被打包在jar中的代碼相關,而不是maven插件。

這裏是我的pom.xml:

<project> 

<modelVersion>4.0.0</modelVersion> 
<groupId>com.mycomp.mygroup</groupId> 
<artifactId>special-persistence-plugin</artifactId> 
<packaging>maven-plugin</packaging> 
<version>1.0-SNAPSHOT</version> 
<name>Special Persistence Plugin</name> 

<dependencies> 
    <dependency> 
    <groupId>org.apache.maven</groupId> 
    <artifactId>maven-plugin-api</artifactId> 
    <version>2.0</version> 
    </dependency> 
</dependencies> 

<build> 
    <plugins> 
    <plugin> 
     <artifactId>maven-compiler-plugin</artifactId> 
     <configuration> 
     <source>1.6</source> 
     <target>1.6</target> 
     <encoding>UTF-8</encoding> 
     <excludes> 
      <exclude>**/SCCS/**/*.java</exclude> 
     </excludes> 
     <phase>compile</phase> 
     <goals> 
      <goal>compiler:compile</goal> 
     </goals>   
     </configuration> 
    </plugin> 
    </plugins> 
</build> 

</project> 

謝謝你給任何人這個想法,

-Denali

+0

您確定編譯期間編譯失敗嗎?你可以運行'mvn generate-resources'並確認它是否有效?我不認爲會。謝謝 – 2010-03-13 06:18:44

+0

行 - 你說得對。它在編譯期間不會失敗。編譯成功。它在插件描述符目標上失敗,這在編譯階段稍後進行。 我該如何指出這個目標應該忽略所有的SCCS目錄和其中的任何java文件? – Denali 2010-03-15 22:54:06

+0

是的,mvn生成資源也失敗在同一個目標。 [插件:描述符{執行:默認描述符}] [信息]使用'UTF-8'編碼讀取mojo元數據。 [INFO]語言運用魔力提取:JAVA [INFO] [錯誤]致命錯誤 [INFO] [INFO]語法錯誤@ [1,2]在文件:/首頁/ dlumma /工作/ BK/cimguitest -5.0-trunk/stsweb/src/main/java/com/coverity/sts/SCCS/p.STSMojo.java p.STSMojo.java應該被忽略。 – Denali 2010-03-15 22:58:29

回答

1

其實,在generate-resources相中之前compile被觸發plugin:descriptor(見用於maven-plugin類型的包裝的lifecycle reference)。

無論如何,這裏的問題是無論失敗的原因(即使mojo已經能夠解析p.STSMojo.java必須包含一些意想不到的頭部,該插件不允許Mojo出現兩次), Maven Plugin Plugin不支持支持包括/排除(見MPLUGIN-15並去投票),我不知道你可以通過配置解決這個問題。

也許您可以在代碼不受版本控制的情況下生成插件描述符,將描述符放入/META-INF/maven/plugin.xml並配置Maven插件插件以跳過描述符生成。但我沒有測試這個。

或者,也許你可以(乾淨或骯髒)修復插件。但是我沒有看到源頭,所以我不能多說這個。

或者,這當然不是預期的答案,但仍然是最簡單的,你也許可以爲你的魔咒使用另一個VCS(僅用於魔咒,爲什麼不與傀儡並行)。

我會先對Jira問題發表評論(您的用例非常有效,應該受支持),那麼您可能會在那裏獲得更好的想法。

+0

謝謝帕斯卡。我最終將源文件移動到一個新位置,生成插件jar,然後將它們移回並檢入。Yuck。但它的工作。我也聯繫過BitKeeper。顯然,他們將在下一個版本中刪除SCCS dirs,但沒有ETA。這是目前BitKeeper版本的一個大問題,它是已知的。我還會在您提供的論壇上的插件模板中發佈包含/排除支持請求。再次感謝你。 – Denali 2010-03-16 23:21:19

+0

@Denali不客氣。並感謝您的反饋。很高興知道bitkeeper人員正在研究這個問題,但我真的不明白這與CVS有什麼不同。 Maven應該能夠忽略SCCS目錄。 – 2010-03-17 15:18:13