maven shade插件正在创建一个名为dependency-reduced-pom.xml和artifactname-shaded.jar的文件,并将它们放置在基本目录中。
这是一个bug吗?它应该在目标目录中。有什么解决方法吗?
maven shade插件正在创建一个名为dependency-reduced-pom.xml和artifactname-shaded.jar的文件,并将它们放置在基本目录中。
这是一个bug吗?它应该在目标目录中。有什么解决方法吗?
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
<createDependencyReducedPom>
该标志用于决定是否为生成的Shaded artifact(阴影打包后的Jar包)生成一个简化版的POM文件。如果设置为true,则会将已经包含在Uber JAR中的依赖从生成的POM文件的dependency部分中移除。这个简化版本的POM文件被命名为dependency-reduced-pom.xml并存储在与阴影打包后的artifact相同的目录下。除非您还指定了dependencyReducedPomLocation,否则插件将在项目基本目录中创建一个名为dependency-reduced-pom.xml的临时文件。
- Type: boolean
- Required: No
- Default: true
target/
,这已经被我的版本控制系统忽略了。dependencyReducedPomLocation
元素添加到插件的configuration
元素中,即可。<configuration>
<dependencyReducedPomLocation>${project.build.directory}/dependency-reduced-pom.xml</dependencyReducedPomLocation>
(...)
</configuration>
http://maven.apache.org/plugins/maven-shade-plugin/shade-mojo.html 上的文档是错误的,因为它说:
createDependencyReducedPom boolean - 是否生成简化的 POM 文件。如果设置为 true,则已包含在 uber JAR 中的依赖项将从生成的 POM 的 section 中删除。简化的 POM 将命名为 dependency-reduced-pom.xml,并存储在与 shaded artifact 相同的目录中。除非您还指定了 dependencyReducedPomLocation,否则插件将在项目 basedir 中创建一个临时文件 named dependency-reduced-pom.xml。默认值为:true。
dependency-reduced-pom.xml 实际上不会存储在与 shaded artifact 相同的目录(target directory)中... 它实际上是在基本目录中生成的,而不是 target 目录。
如果要忽略文件,您可以将其添加到 DVCS 的 ignore 指令中。对于 git
,会创建一个名为 .gitignore
的文件,并包含以下内容:
dependency-reduced-pom.xml
maven-clean-plugin
配置中,以便在clean生命周期阶段期间被删除:(以下假定默认值,如版本,在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>