自定义maven插件的等效分类器

时间:2017-07-04 09:05:24

标签: scala maven gradle maven-plugin

我有一个项目,包含Scala核心库,maven插件,gradle插件以及此问题不需要的一堆其他位。它是使用gradle构建的。 (使用gradle构建maven插件比使用maven的gradle插件更容易)

由于Scala版本和兼容性,使用maven插件的不同项目需要不同的核心库版本。目前我需要建立2.11.7和2.12.1。核心库可以很容易地用分类器解决。 E.G:

<dependency>
    <groupId>org.catapult.sa</groupId>
    <artifactId>tribble-core</artifactId>
    <version>0.5-SNAPSHOT</version>
    <classifier>2.11.7</classifier>
    <scope>test</scope>
</dependency>

然而,maven插件配置没有分类器,所以我们无法做到:

<plugin>
    <groupId>org.catapult.sa</groupId>
    <artifactId>tribble-maven-plugin</artifactId>
    <version>0.5-SNAPSHOT</version>
    <classifier>2.11.7</classifier> <!-- this errors with Unrecognised tag: 'classifier'-->
    <configuration>...</configuration>
</plugin>

两个版本的maven插件的代码完全相同,只是略有不同的依赖关系。核心中的代码也完全相同,但是针对不同的编译器构建。

我可以使用构建中的设置手动处理,更改maven插件的artifactId,然后构建两次,但是&#34; right&#34;解决这个问题的方法?是否有更好的方式或更自动化的方式?

1 个答案:

答案 0 :(得分:0)

可以在执行配置级别添加分类器,例如:

 def foo
  time = Benchmark.measure {
   code to test
   }

它有点埋没在POM reference的细节中,实际上上面的例子来自PluginManagement部分,但原则是相同的。 这应该允许您定位所需的每个版本的构建,而无需手动设置artifactid。