当前位置: 首页 > 知识库问答 >
问题:

将createDependencyReducedPom设置为false(maven-shade-plugin)的原因是什么?

何越
2023-03-14

我阅读了一些关于maven-shade-plugincreatereduceddependencypom的源代码:

  • 是否自动使用dependency-reduced-pom.xml而不是pom.xml
  • shade插件生成的dependency-reduced-pom.xml的目的是什么?
  • 将dependency-reduced-pom.xml添加到基目录的Maven shade插件
  • https://maven.apache.org/plugins/maven-shade-plugin/shade-mojo.html#createDependencyReducedPOM

我知道它将创建一个pom,去掉阴影区的依赖项,这样阴影区jar上的下游依赖项就不会再处理那些可以从阴影区jar访问的依赖项。

但是,我不明白在什么情况下会将默认值(true)更改为false。

谁能提供一个这样做有用的例子吗?

共有1个答案

申浩广
2023-03-14

虽然将createDependencyReducedPOM设置为true在使用shaded工件(jar)作为其他项目的依赖项时非常有用,但我最近遇到了一个问题,即与多个线程并行运行我的多模块maven构建会导致maven-shade-plugin进入无限循环并永远阻塞构建。

禁用dependency-reduced-pom文件的创建对我来说是解决这个问题的方法。

您不想创建dependency-reduced-pom的另一个原因是,正在构建的带阴影的jar是一个应用程序,而不是要在其他地方重新使用的库。

 类似资料:
  • Maven shade plugin 为 Maven 提供了 Jar 打包的神器,包括将所依赖的 jar 包都打包到一起。

  • PHP手册说,如果锁定成功,调用flock将返回TRUE,否则返回FALSE。若文件被其他进程阻塞,那个么flock应该等到它被解锁(因为我们不使用LOCK_NB)。文档中没有超时,超时会中断等待,所以显然flock将无限等待,直到获得锁为止。 但是有时我在我的多线程脚本中从flock()得到FALSE。那是什么原因呢?

  • 我正在使用maven-shade-plugin在构建的包阶段重新定位一些包。我还使用maven-bundle-plugin生成一个清单。问题是bundle插件在shade插件之前运行(在过程类阶段),并且在生成的清单的导出中没有包含任何我的shade包。 -- 根据要求,我的POM的阴影和捆绑部分: 从这里取的

  • 问题内容: 我发现有人的pom.xml中使用了maven-shade-plugin。我以前从未使用过maven-shade-plugin(并且我是Maven n00b),所以我试图了解使用它的原因及其作用。 我看了看Maven文档,但是我听不懂这句话: “此插件提供了将工件打包在uber-jar中的功能,包括其依赖项,并可以遮蔽(即重命名)某些依赖项的包。” 该页面上的文档似乎不太适合新手。 什么

  • 我有一个项目,它使用maven-assembly-plugin打包了几个(可执行的jar)程序集--基本上相同的代码,但针对不同的客户机使用了不同的数据集。 我需要在可执行jar中使用spring,由于spring中的文件命名,我需要使用maven-shade-plugin创建jar。这工作很好,我可以创建可执行的jar,但我不能确定如何将我的其他文件组装到这个新的shaded jar,因为sha