maven shade 插件正在创建一个名为dependency-reduced-pom.xml和artifactname-shaded.jar 的文件,并将它们放在基本目录中。
这是一个错误吗?应该在目标目录中。任何解决方法?
maven shade 插件正在创建一个名为dependency-reduced-pom.xml和artifactname-shaded.jar 的文件,并将它们放在基本目录中。
这是一个错误吗?应该在目标目录中。任何解决方法?
createDependencyReducedPom
您可以通过设置为 false来避免创建它。
例如
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-shade-plugin</artifactId>
<version>${maven-shade-plugin.version}</version>
<configuration>
<createDependencyReducedPom>false</createDependencyReducedPom>
</configuration>
....
....
</plugin>
从 apache查看更多细节
基于bmargulies的回答和他对Xv 的评论。的答案,我决定将减少依赖的 POM 配置为输出到target/
,这在我的 VCS 中已经被忽略了。
为此,我只是将dependencyReducedPomLocation
元素添加到configuration
插件的元素中,即
<configuration>
<dependencyReducedPomLocation>${project.build.directory}/dependency-reduced-pom.xml</dependencyReducedPomLocation>
(...)
</configuration>
请参阅https://issues.apache.org/jira/browse/MSHADE-121和https://issues.apache.org/jira/browse/MSHADE-124。
可以选择将 drp 移动到其他地方,但您可能不喜欢这样的后果。
你对 -shaded jar 的看法是错误的,它总是以 target/ 结尾,除非你把它移到别处。
您可以使用旧版本的插件。1.7 版的 maven-shade-plugin 写入 /target。
从 1.7.1 版本开始,减少依赖的 pom.xml 被写入 basedir。请参阅问题MSHADE-124以了解执行此操作的某些原因以及后果。如果您尝试设置dependencyReducedPomLocation,您可能会遇到生成站点打开问题MSHADE-145的问题。
http://maven.apache.org/plugins/maven-shade-plugin/shade-mojo.html上的文档说:
createDependencyReducedPom boolean - 标记是否为着色工件生成简化的 POM。如果设置为 true,则已包含在 uber JAR 中的依赖项将从生成的 POM 部分中删除。精简后的 POM 将被命名为 dependency-reduced-pom.xml 并存储在与阴影工件相同的目录中。除非您还指定了dependencyReducedPomLocation,否则插件将在项目 basedir 中创建一个名为dependency-reduced-pom.xml 的临时文件。默认值为:真。
dependency-reduced-pom.xml没有存储在与阴影工件(目标目录)相同的目录中......它实际上是在基本目录中生成的,而不是目标
要忽略该文件,您可以将其添加到 DVCS 的忽略指令中。对于git
,.gitignore
创建一个包含以下内容的文件:
dependency-reduced-pom.xml
您还可以将其添加到maven-clean-plugin
配置中,以便在干净的生命周期阶段将其删除:(以下假设默认值,例如版本,在POMpluginManagement
部分中定义。)
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-shade-plugin</artifactId>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-clean-plugin</artifactId>
<configuration>
<filesets>
<fileset>
<directory>.</directory>
<includes>
<include>**/dependency-reduced-pom.xml</include>
</includes>
<followSymlinks>false</followSymlinks>
</fileset>
</filesets>
</configuration>
</plugin>
</plugins>
</build>
请注意,上述配置是对非自定义清洁默认值的附加。