Maven unpack依赖于插件依赖项

时间:2016-05-18 15:37:47

标签: maven

如何为dependency:unpack-dependencies部分中指定的依赖项运行<plugin>

我有三个包含可执行文件和其他内容的软件包,我们称之为parentchildconsumer child取决于parent 。为了构建消费者,我需要获取child及其所有依赖项(即parent),解压缩其内容并执行一些操作。

我现在所做的工作,有点:

当声明对child的依赖时&#34;全局&#34;在<project>中,解包按预期工作。但是,这意味着生成的consumer包依赖于child,这是我不想要的。依赖性必须仅仅用于创建,而不是用法。

当我将依赖项移动到<plugins><plugin>部分时,dependency:unpack-dependenciesdependency:unpack进程会忽略它并将其解包,但这不是传递的)

我错过了什么?感谢

Maven知道传递依赖child - &gt; parent。当我删除整个本地存储库并仅运行此POM时,会下载parent

以下情况的粗略图表。创建最终工件需要绿色工件(之后不需要使用它),因此对它们的依赖只属于该部分。最终工件的使用需要蓝色工件,因此它依赖于它。

enter image description here

1 个答案:

答案 0 :(得分:2)

由于在为整个项目指定依赖项时解压缩按预期工作,或许您应该保持这种方式。而不是将其移动到插件依赖项,您可以简单地指示Maven在其他项目依赖于您的项目时不会传递它。有两种方法可以做到:

  1. 指定<scope>provided</scope> - 这将告诉Maven编译需要依赖关系,但预计可以通过其他方式在运行时使用(例如提供它的应用程序服务器或捆绑它)。
  2. 指定<optional>true</optional> - 这将防止其他项目根据您的项目传递解决依赖关系。相反,他们必须明确指定它,如果他们想要的话。