2013-01-12 27 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

相关问题