2013-01-12 51 views
0

是否可以將原型和普通Maven插件的功能組合到一個插件中?我可以製作一個Maven插件來生成一個項目,然後構建該項目?

我有一種自定義語言,可以編譯成Java源代碼。我寫了一個Maven插件,它在generate-sources階段執行此操作,將Java源添加到項目中,並構建項目。它按我的預期工作。

但是,要使用它,我需要先寫出一個引用我的插件的pom.xml文件,並描述輸入文件的位置。我希望能夠直接從原始輸入文件到單個maven命令中的編譯代碼。

例如,假設我有這樣的目錄結構:

my-project/ 
    some-input-file.dsl 

我想運行

bash$ mvn com.waisbrot.plugin:generate -DgroupID=com.waisbrot package 

和Maven的運行完之後有:

my-project/ 
    some-input-file.dsl 
    pom.xml 
    target/ 
     generated-sources/ 
      plugin/ 
       SomeInputFile.java 
     classes/ 
      com/ 
       waisbrot/ 
        SomeInputFile.class 
     some-input-file-1.0.jar 
+0

最好的辦法是配置您的插件安裝到生命週期在你顯示的那個pom中。而已。您的dsl文件的位置應該更改爲src/main/name-of-your-dsl/xyz-input-file.dsl。像其他DSL一樣,使用Groovy等Maven進行處理。 – khmarbaise

+0

可以移動文件並將其新位置存儲在生成的POM中;我不在乎這一點。我問的是,如果我可以將非Maven目錄轉換爲Maven項目,然後同時執行該新創建項目的Maven目標。 –

回答

1

實際上,整合原型的測試允許您聲明參數和目標。所以這樣做:

  1. 選擇您想要創建
  2. MVN原型模板項目:創自項目。它會創建一個新的原型
  3. 查看src/test/resources/projects,特別是goal.txt和archetype.properties(來源:http://maven.apache.org/archetype/maven-archetype-plugin/integration-test-mojo.html)。調整所以安裝將是含蓄
  4. MVN驗證就能建立原型,運行它,並把它安裝

希望它可以幫助

+0

好吧,看來我要求的東西完全不受Maven支持。這可能是我能夠得到的最接近,看起來像一個非常漂亮的kludge。謝謝! –

+1

如果您將功能分爲多個@Mojos,則默認情況下每個默認綁定到生命週期階段。 – aldrinleal

相關問題