【发布时间】:2012-07-04 01:52:16
【问题描述】:
maven shade 插件正在创建一个名为 dependency-reduced-pom.xml 的文件以及 artifactname-shaded.jar 并将它们放在基本目录中。 p>
这是一个错误吗?应该在目标目录中。有什么解决方法吗?
【问题讨论】:
标签: java maven maven-shade-plugin
maven shade 插件正在创建一个名为 dependency-reduced-pom.xml 的文件以及 artifactname-shaded.jar 并将它们放在基本目录中。 p>
这是一个错误吗?应该在目标目录中。有什么解决方法吗?
【问题讨论】:
标签: java maven maven-shade-plugin
您可以通过将 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>
【讨论】:
根据 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。
可以选择将 d-r-p 移动到其他地方,但您可能不喜欢这样的结果。
你对 -shaded jar 的看法是错误的,它总是以 target/ 结尾,除非你把它移到别处。
【讨论】:
You may not like the consequences 是什么意思?有什么负面后果?
您可以使用旧版本的插件。 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 不存储在与阴影工件(目标目录)相同的目录中......它实际上是在基础目录中生成的,而不是目标 p>
【讨论】:
要忽略该文件,您可以将其添加到 DVCS 的忽略指令中。对于git,将创建一个.gitignore 文件,其中包含以下内容:
dependency-reduced-pom.xml
您也可以add it to maven-clean-plugin configuration,所以它在clean lifecycle phase 期间被吹走:(下面假设默认值,例如版本,在POMs pluginManagement section 中定义。)
<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>
请注意,上述配置是对非自定义清洁默认值的附加。
【讨论】: