maven shade插件正在创建一个名为 dependency-reduced-pom.xml 和 artifactname-shaded.jar 的文件,并将它们放在基目录中。这是一个错误吗?应该在目标目录中。有解决方法吗?
4c8rllxm1#
您可以通过将createDependencyReducedPom设置为false来避免创建它。例如:
createDependencyReducedPom
<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的临时文件。
*类型:布尔型*必需:没有*默认值:真
eagi6jfj2#
根据bmargulies的回答和他对**Xv.**的回答的评论,我决定将减少依赖性的POM配置为输出到target/,这在我的VCS中已经被忽略了。为此,我只是将dependencyReducedPomLocation元素添加到插件的configuration元素中,即
target/
dependencyReducedPomLocation
configuration
<configuration> <dependencyReducedPomLocation>${project.build.directory}/dependency-reduced-pom.xml</dependencyReducedPomLocation> (...) </configuration>
izj3ouym3#
请参见https://issues.apache.org/jira/browse/MSHADE-121和https://issues.apache.org/jira/browse/MSHADE-124。有一个选择是把d-r-p移到其他地方,但你可能不喜欢这样的后果。你对-shaded jar的看法是错误的,它总是在target中结束/除非你把它移到其他地方。
ct2axkht4#
您可以使用旧版本的插件。maven-shade-plugin的1.7版本写入/target。从版本1.7.1开始,dependency-reduced pom.xml被写入basedir。请参阅问题MSHADE-124,了解执行此操作的原因以及结果。如果尝试设置 dependencyReducedPomLocation,则可能会遇到生成站点打开问题MSHADE-145的问题。
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 * 不 * 存储在与阴影工件相同的目录(目标目录)中......它实际上是在基目录中生成的,而不是在目标目录中生成的
hkmswyz66#
要忽略该文件,可以将其添加到DVCS的ignore指令中。对于git,将创建一个.gitignore文件,其内容为:
git
.gitignore
dependency-reduced-pom.xml
您还可以add it to maven-clean-plugin configuration,以便在清理生命周期阶段将其清除:(以下假设在POM pluginManagement部分中定义了默认值,例如版本。)
maven-clean-plugin
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默认值的补充。
6条答案
按热度按时间4c8rllxm1#
您可以通过将
createDependencyReducedPom
设置为false来避免创建它。例如:
请参见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的临时文件。
*类型:布尔型
*必需:没有
*默认值:真
eagi6jfj2#
根据bmargulies的回答和他对**Xv.**的回答的评论,我决定将减少依赖性的POM配置为输出到
target/
,这在我的VCS中已经被忽略了。为此,我只是将
dependencyReducedPomLocation
元素添加到插件的configuration
元素中,即izj3ouym3#
请参见https://issues.apache.org/jira/browse/MSHADE-121和https://issues.apache.org/jira/browse/MSHADE-124。
有一个选择是把d-r-p移到其他地方,但你可能不喜欢这样的后果。
你对-shaded jar的看法是错误的,它总是在target中结束/除非你把它移到其他地方。
ct2axkht4#
您可以使用旧版本的插件。maven-shade-plugin的1.7版本写入/target。
从版本1.7.1开始,dependency-reduced pom.xml被写入basedir。请参阅问题MSHADE-124,了解执行此操作的原因以及结果。如果尝试设置 dependencyReducedPomLocation,则可能会遇到生成站点打开问题MSHADE-145的问题。
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 * 不 * 存储在与阴影工件相同的目录(目标目录)中......它实际上是在基目录中生成的,而不是在目标目录中生成的
hkmswyz66#
要忽略该文件,可以将其添加到DVCS的ignore指令中。对于
git
,将创建一个.gitignore
文件,其内容为:您还可以add it to
maven-clean-plugin
configuration,以便在清理生命周期阶段将其清除:(以下假设在POMpluginManagement
部分中定义了默认值,例如版本。)请注意,上述配置是对非定制的clean默认值的补充。