65

maven shade 插件正在创建一个名为dependency-reduced-pom.xmlartifactname-shaded.jar 的文件,并将它们放在基本目录中。

这是一个错误吗?应该在目标目录中。任何解决方法?

4

6 回答 6

77

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查看更多细节

在此处输入图像描述

于 2012-07-04T05:31:38.147 回答
21

基于bmargulies的回答和他对Xv 的评论。的答案,我决定将减少依赖的 POM 配置为输出到target/,这在我的 VCS 中已经被忽略了。

为此,我只是将dependencyReducedPomLocation元素添加到configuration插件的元素中,即

<configuration>
  <dependencyReducedPomLocation>${project.build.directory}/dependency-reduced-pom.xml</dependencyReducedPomLocation>
  (...)
</configuration>
于 2014-10-16T13:57:43.363 回答
10

请参阅https://issues.apache.org/jira/browse/MSHADE-121https://issues.apache.org/jira/browse/MSHADE-124

可以选择将 drp 移动到其他地方,但您可能不喜欢这样的后果。

你对 -shaded jar 的看法是错误的,它总是以 target/ 结尾,除非你把它移到别处。

于 2012-07-03T15:33:00.843 回答
3

您可以使用旧版本的插件。1.7 版的 maven-shade-plugin 写入 /target。

从 1.7.1 版本开始,减少依赖的 pom.xml 被写入 basedir。请参阅问题MSHADE-124以了解执行此操作的某些原因以及后果。如果您尝试设置dependencyReducedPomLocation,您可能会遇到生成站点打开问题MSHADE-145的问题。

于 2014-10-16T16:46:03.163 回答
0

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没有存储在与阴影工件(目标目录)相同的目录中......它实际上是在基本目录中生成的,而不是目标

于 2014-09-18T15:57:43.860 回答
0

要忽略该文件,您可以将其添加到 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>

请注意,上述配置是对非自定义清洁默认值的附加。

于 2021-08-19T00:59:23.210 回答