【问题标题】:Maven shade plugin adding dependency-reduced-pom.xml to base directoryMaven shade插件将dependency-reduced-pom.xml添加到基本目录
【发布时间】:2012-07-04 01:52:16
【问题描述】:

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

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

【问题讨论】:

    标签: java maven maven-shade-plugin


    【解决方案1】:

    您可以通过将 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>
    

    more detail from apache

    【讨论】:

    • 如果你关闭它,那么你构建的东西仍然会将所有合并的依赖项列为依赖项。
    【解决方案2】:

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

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

    <configuration>
      <dependencyReducedPomLocation>${project.build.directory}/dependency-reduced-pom.xml</dependencyReducedPomLocation>
      (...)
    </configuration>
    

    【讨论】:

    • 请注意,来自插件文档“在哪里放置依赖项减少的 pom。注意:使用 ${basedir} 以外的目录设置此参数的值将更改 ${basedir 的值} 对于阴影执行之后的所有执行。这通常不是你想要的。这被认为是这个插件的一个未解决的问题。"
    【解决方案3】:

    https://issues.apache.org/jira/browse/MSHADE-121,也见https://issues.apache.org/jira/browse/MSHADE-124

    可以选择将 d-r-p 移动到其他地方,但您可能不喜欢这样的结果。

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

    【讨论】:

    • 你能解释一下我们应该如何处理这个生成的 pom 吗?
    • 没什么。将其添加到您的 .gitignore 文件中或在其上设置 svn:ignore。 Maven 制作它以便它可以将它包含在阴影 jar 中。
    • You may not like the consequences 是什么意思?有什么负面后果?
    【解决方案4】:

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

    从 1.7.1 版本开始,减少依赖的 pom.xml 被写入 basedir。请参阅问题MSHADE-124,了解为什么这样做以及后果是什么。如果您尝试设置 dependencyReducedPomLocation,您可能会遇到生成站点的问题 - 打开问题 MSHADE-145

    【讨论】:

      【解决方案5】:

      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>

      【讨论】:

      • 他们写道(即使在你的回答中你也可以看到):“插件将在项目 basedir 中创建一个名为 dependency-reduced-pom.xml 的临时文件”
      【解决方案6】:

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

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

      【讨论】:

        猜你喜欢
        • 2014-05-19
        • 2018-06-09
        • 2016-10-01
        • 2016-05-11
        • 2014-12-17
        • 1970-01-01
        • 1970-01-01
        • 2017-06-07
        • 2015-08-20
        相关资源
        最近更新 更多