Maven Assembly 插件合并策略
Maven Assembly Plugin Merge Strategy
我正在尝试将 Scala/Java 项目构建从 sbt 转换为 Maven。我得到的项目 运行 没有问题,除了在尝试打包 fat jar 时。
我在尝试编写合并策略时遇到了一些问题 运行。这是我要转换的代码,来自 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 的程序集插件与自定义描述符一起使用。我一直在玩弄提供的容器描述符处理程序,但其中 none 正在像 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 吗?
在 的 "adventure" 期间,我认为我触及了类似的基础,我可以提供一些见解。
您可以选择其中之一,或同时选择两者:
- 阅读
中的答案
- 查看我的github project 挖掘这个话题
总结
因为唯一 sbt assembly
MergeStrategy
你应该担心的是 MergeStrategy.first
你的 Maven 构建应该没问题,因为它是 默认 在 Maven 中设置。罐子会有不同的内容,但功能相同。
除非我遗漏了什么,否则请提供更详细的信息。
我正在尝试将 Scala/Java 项目构建从 sbt 转换为 Maven。我得到的项目 运行 没有问题,除了在尝试打包 fat jar 时。
我在尝试编写合并策略时遇到了一些问题 运行。这是我要转换的代码,来自 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 的程序集插件与自定义描述符一起使用。我一直在玩弄提供的容器描述符处理程序,但其中 none 正在像 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 吗?
在
您可以选择其中之一,或同时选择两者:
- 阅读
- 查看我的github project 挖掘这个话题
总结
因为唯一 sbt assembly
MergeStrategy
你应该担心的是 MergeStrategy.first
你的 Maven 构建应该没问题,因为它是 默认 在 Maven 中设置。罐子会有不同的内容,但功能相同。
除非我遗漏了什么,否则请提供更详细的信息。