如何为dependency:unpack-dependencies
部分中指定的依赖项运行<plugin>
?
我有三个包含可执行文件和其他内容的软件包,我们称之为parent
,child
和consumer
。 child
取决于parent
。为了构建消费者,我需要获取child
及其所有依赖项(即parent
),解压缩其内容并执行一些操作。
我现在所做的工作,有点:
当声明对child
的依赖时&#34;全局&#34;在<project>
中,解包按预期工作。但是,这意味着生成的consumer
包依赖于child
,这是我不想要的。依赖性必须仅仅用于创建,而不是用法。
当我将依赖项移动到<plugins><plugin>
部分时,dependency:unpack-dependencies
(dependency:unpack
进程会忽略它并将其解包,但这不是传递的)
我错过了什么?感谢
Maven知道传递依赖child
- &gt; parent
。当我删除整个本地存储库并仅运行此POM时,会下载parent
。
以下情况的粗略图表。创建最终工件需要绿色工件(之后不需要使用它),因此对它们的依赖只属于该部分。最终工件的使用需要蓝色工件,因此它依赖于它。
答案 0 :(得分:2)
由于在为整个项目指定依赖项时解压缩按预期工作,或许您应该保持这种方式。而不是将其移动到插件依赖项,您可以简单地指示Maven在其他项目依赖于您的项目时不会传递它。有两种方法可以做到:
<scope>provided</scope>
- 这将告诉Maven编译需要依赖关系,但预计可以通过其他方式在运行时使用(例如提供它的应用程序服务器或捆绑它)。<optional>true</optional>
- 这将防止其他项目根据您的项目传递解决依赖关系。相反,他们必须明确指定它,如果他们想要的话。