如何使用Maven 3的混合功能?

15

我试图弄清楚Maven 3中混合模式的定义,但除了噱头之外,找不到其他任何东西。它被传播为其中一个重要的新功能,可以在这里这里找到相关信息。我目前正在感受到分层结构的痛苦,并想试一试。有没有人能提供文档或定义语法的源代码的指针?

4个回答

15

Brett Porter 在这个答案的评论中写道:

Maven 3.0目前还没有提供mixin功能。- Brett Porter Feb 16 at 8:18

根据我所知,混入(mixins)功能仍然没有出现。


3
我也在Twitter上询问了,并从Jason van Zyl那里得到了相同的答案。看起来这将在Maven 3.1中推出。参见:http://twitter.com/jvanzyl/status/10601935842 - Mirko Jahn

3
Jesse Glick指出了Maven问题5102,所以我想提一下那里最近的评论(2012年10月2日)链接到一个新的maven插件,提供混合行为:maven-tiles。这似乎是最好的选择,直到混合支持实际上被集成到Maven中(这个已经推迟了几年了)。 编辑2015年1月tknerr指出,这个问题已经被标记为Maven 4的审查内容。Maven开发人员似乎认为需要POM格式更改才能正确支持此功能。(作为长期使用Maven的用户,我对此并不感到惊讶。)

2
MNG-5102目前显示为:“修复版本/问题需要审核4.x”。因此它还没有在3.x中,可能永远不会出现在那里... - Torben Knerr

2
你可以使用开源插件将mixin引入到你的pom文件中。
有几个插件可以处理混合的层次结构复杂性。其中一个插件是为了解决插件/插件管理部分中的层次结构问题而设计的。
它读取所有导入的POM文件,并将它们合并到POM文件中,就像Maven计算effective-pom一样。该插件仅合并build、properties和profiles部分,不会合并任何其他pom元素,例如依赖项、存储库等。
在下面的代码片段中,artifact sample-mixin将消耗sample-mixin pom文件中定义的插件管理配置。无需继承任何父/基础pom文件。
<plugin>
  <groupId>com.github.odavid.maven.plugins</groupId>
  <artifactId>mixin-maven-plugin</artifactId>
  <version>0.1-alpha-23</version>
  <extensions>true</extensions>
  <configuration>
    <mixins>
      <mixin>
        <groupId>mixin-example</groupId>
        <artifactId>sample-mixin</artifactId>
        <version>${project.version}</version>
      </mixin>
    </mixins>
  </configuration>
</plugin>

了解更多,请访问: http://rethinkingswd.blogspot.co.il/2014/09/mixin-maven-plugin-reusable-project.html


1
混合(Mixins)计划在Maven 3.2中推出,详见bug MNG-5102。它们是许多备受推崇的错误之一,在候选的Maven 3.1版本中没有得到解决。
至此,“铺设欲望线路”的计划也就无从谈起了。

链接已经失效,请替换链接:https://issues.apache.org/jira/browse/MNG-5102 - Anastasiia Smirnova
据我所知,@NealeU,混合组件仍未包含在Maven中(现在是v3.6.1?)并且很可能不会在没有先更改pom格式的情况下被包含。 - Igor

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接