Maven组件插件合并策略

时间:2018-08-24 20:02:18

标签: java scala maven sbt maven-assembly-plugin

我正在尝试将Scala / Java项目构建从sbt转换为Maven。除了尝试打包胖子罐外,我已经使该项目正常运行。

尝试编写合并策略时遇到一些问题。这是我尝试从build.sbt转换的代码:

assemblyMergeStrategy in assembly := {
  case PathList("META-INF", "MANIFEST.MF")  => MergeStrategy.discard
  case PathList("META-INF", xs @ _*)        => MergeStrategy.first
  case x                                    => MergeStrategy.first
}

我试图将Maven的程序集插件与自定义描述符一起使用。我一直在使用提供的容器描述符处理程序,但是没有一个像sbt那样合并。这是我到目前为止的内容:

<assembly xmlns="http://maven.apache.org/ASSEMBLY/2.0.0"
      xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
      xsi:schemaLocation="http://maven.apache.org/ASSEMBLY/2.0.0 http://maven.apache.org/xsd/assembly-2.0.0.xsd">
<id>my-project</id>
<formats>
    <format>jar</format>
</formats>
<includeBaseDirectory>false</includeBaseDirectory>

<dependencySets>
    <dependencySet>
        <outputDirectory>/</outputDirectory>
        <useProjectArtifact>true</useProjectArtifact>
        <unpack>true</unpack>
        <scope>runtime</scope>
    </dependencySet>
</dependencySets>

<containerDescriptorHandlers>
    <containerDescriptorHandler>
        <handlerName>metaInf-services</handlerName>
    </containerDescriptorHandler>
    <containerDescriptorHandler>
        <handlerName>metaInf-spring</handlerName>
    </containerDescriptorHandler>
    <containerDescriptorHandler>
        <handlerName>plexus</handlerName>
    </containerDescriptorHandler>
</containerDescriptorHandlers>

有什么方法可以从sbt构建中模拟MergeStrategy吗?

1 个答案:

答案 0 :(得分:1)

migrating assembly from Maven to SBT的“冒险”期间,我认为我也碰到了类似的情况,并且我可以提供一些见识。

您可以选择一个,也可以两个都选:

摘要

由于您唯一需要担心的sbt assembly MergeStrategyMergeStrategy.first,因此您的Maven构建应该很好,因为它是Maven中的默认设置。该罐子将具有不同的内容,但功能相同。

除非我缺少任何内容,否则请提供更多详细信息。