Maven着色插件将dependency-reduced-pom.xml添加到基目录

uplii1fm  于 2023-03-17  发布在  Maven
关注(0)|答案(6)|浏览(285)

maven shade插件正在创建一个名为 dependency-reduced-pom.xmlartifactname-shaded.jar 的文件,并将它们放在基目录中。
这是一个错误吗?应该在目标目录中。有解决方法吗?

4c8rllxm

4c8rllxm1#

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

请参见http://maven.apache.org/plugins/maven-shade-plugin/shade-mojo.html#createDependencyReducedPom

  • *

标记是否为着色对象生成简化的POM。如果设置为true,则已包含在uber JAR中的相关性将从生成的POM部分中删除。简化的POM将命名为dependency-reduced-pom.xml,并存储在与着色对象相同的目录中。除非还指定dependencyReducedPomLocation,否则,插件将在项目basedir中创建一个名为dependency-reduced-pom.xml的临时文件。

*类型:布尔型
*必需:没有
*默认值:真

eagi6jfj

eagi6jfj2#

根据bmargulies的回答和他对**Xv.**的回答的评论,我决定将减少依赖性的POM配置为输出到target/,这在我的VCS中已经被忽略了。
为此,我只是将dependencyReducedPomLocation元素添加到插件的configuration元素中,即

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

izj3ouym3#

请参见https://issues.apache.org/jira/browse/MSHADE-121https://issues.apache.org/jira/browse/MSHADE-124
有一个选择是把d-r-p移到其他地方,但你可能不喜欢这样的后果。
你对-shaded jar的看法是错误的,它总是在target中结束/除非你把它移到其他地方。

ct2axkht

ct2axkht4#

您可以使用旧版本的插件。maven-shade-plugin的1.7版本写入/target。
从版本1.7.1开始,dependency-reduced pom.xml被写入basedir。请参阅问题MSHADE-124,了解执行此操作的原因以及结果。如果尝试设置 dependencyReducedPomLocation,则可能会遇到生成站点打开问题MSHADE-145的问题。

5jdjgkvh

5jdjgkvh5#

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

hkmswyz6

hkmswyz66#

要忽略该文件,可以将其添加到DVCS的ignore指令中。对于git,将创建一个.gitignore文件,其内容为:

dependency-reduced-pom.xml

您还可以add it to maven-clean-plugin configuration,以便在清理生命周期阶段将其清除:(以下假设在POM pluginManagement部分中定义了默认值,例如版本。)

<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>

请注意,上述配置是对非定制的clean默认值的补充。

相关问题