在POM中自动将一个Maven插件替换为另一个Maven插件

时间:2012-09-14 10:15:28

标签: maven replace pom.xml

请知道是否可以在项目的POM文件中自动替换一个Maven插件?

上下文是我试图使用Scala编译器插件拦截Scala构建,为此我希望能够从命令行指定Scala编译器插件作为scalac的参数(即不在POM文件中)。这可以使用最新版本的Scala Maven插件(称为scala-maven-plugin)使用其addScalacArgs标志 - 请参见此处:http://davidb.github.com/scala-maven-plugin/apidocs/scala_maven/ScalaMojoSupport.html。但是,旧版本的插件(称为maven-scala-plugin)是不可能的,我需要在所有各种POM文件中添加参数(在处理大型的第三个文件时不是一个有吸引力的命题 - 党项目)。

我的想法是,如果我可以使用POM文件中的新版本自动替换旧版本的插件,那么我可以使用addScalacArgs,一切都会顺利进行。我可能会做一些代码来做这件事(显然手动执行它并不比通过并添加参数更好),但似乎可能是支持Maven用例的那种东西。

具体而言,我正在尝试替换此插件:

<plugin>
  <groupId>org.scala-tools</groupId>
  <artifactId>maven-scala-plugin</artifactId>
  ...
</plugin>

这一个:

<plugin>
  <groupId>net.alchim31.maven</groupId>
  <artifactId>scala-maven-plugin</artifactId>
  ...
</plugin>

1 个答案:

答案 0 :(得分:0)

您可以使用pom中的两个配置文件执行此操作。一个默认激活另一个不激活。然后,您可以轻松选择相应使用哪个配置文件。

例如,这是一篇同样精神的老帖子:How do I exclude a dependency in provided scope when running in Maven test scope?