maven shade插件正在创建一个名为 dependency-reduced-pom.xml 的文件,还有 artifactname-shaded.jar 并将它们放在基本目录中。
这是一个错误吗?应该在目标目录中。任何解决方法?
答案 0 :(得分:55)
您可以通过将createDependencyReducedPom
设置为false来避免创建它。
e.g。
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-shade-plugin</artifactId>
<version>${maven-shade-plugin.version}</version>
<configuration>
<createDependencyReducedPom>false</createDependencyReducedPom>
</configuration>
....
....
</plugin>
答案 1 :(得分:19)
基于 bmargulies '回答以及他对 Xv。的回答的评论,我决定将依赖项减少的POM配置为输出到target/
,在我的VCS中已被忽略。
为此,我只是将dependencyReducedPomLocation
元素添加到插件的configuration
元素中,即
<configuration>
<dependencyReducedPomLocation>${project.build.directory}/dependency-reduced-pom.xml</dependencyReducedPomLocation>
(...)
</configuration>
答案 2 :(得分:8)
请参阅https://issues.apache.org/jira/browse/MSHADE-121以及https://issues.apache.org/jira/browse/MSHADE-124。
可以选择将d-r-p移动到其他地方,但您可能不喜欢这些后果。
你对阴影罐子的看法是错误的,它总是以目标/结束,除非你把它移到其他地方。
答案 3 :(得分:3)
您可以使用旧版本的插件。 maven-shade-plugin 1.7版写入/ target。
从1.7.1版开始,依赖性降低的pom.xml被写入basedir。请参阅问题MSHADE-124,了解其完成的原因以及后果。如果您尝试设置 dependencyReducedPomLocation ,则可能会遇到生成网站的问题 - 打开问题MSHADE-145。
答案 4 :(得分:0)
http://maven.apache.org/plugins/maven-shade-plugin/shade-mojo.html上的文档说错了:
createDependencyReducedPom boolean - 标记是否生成 简化了阴影工件的POM。如果设置为true,依赖项 已被包含在超级JAR中的将被删除 生成的POM的一部分。减少的POM将是 命名为dependency-reduced-pom.xml并存储在同一目录中 作为阴影神器。除非你也指明 dependencyReducedPomLocation,该插件将创建一个临时文件 在项目basedir中命名dependency-reduced-pom.xml。默认值 是:真的。
dependency-reduced-pom.xml not 存储在与着色工件(目标目录)相同的目录中......它实际上是在基本目录中生成的,而不是目标