【发布时间】:2016-05-18 15:37:47
【问题描述】:
如何为 <plugin> 部分中指定的依赖项运行 dependency:unpack-dependencies?
我有三个包含可执行文件和其他东西的包,我们称它们为parent、child 和consumer。 child 依赖于parent。为了构建消费者,我需要获取child 及其所有依赖项(即parent),解压缩它们的内容并做一些事情。
我现在的作品,有点:
当child 的依赖在<project> 中被声明为“全局”时,解包将按预期进行。但是,这意味着生成的consumer 包依赖于child,这是我不想要的。依赖项必须仅用于创建,而不是使用。
当我将依赖项移动到 <plugins><plugin> 部分时,它会被 dependency:unpack-dependencies 忽略(dependency:unpack 处理并解压它,但这不是传递的)
我错过了什么?谢谢
Maven 知道传递依赖 child -> parent。当我删除整个本地存储库并仅运行此 POM 时,会下载 parent。
以下情况的非常粗略的图表。创建最终工件需要绿色工件(之后不需要使用它),因此对它们的依赖仅属于该部分。最终神器的使用需要蓝色神器,因此对它有依赖。
【问题讨论】:
-
你想达到什么目的?为什么要解压插件依赖项?
-
不是java项目。在父包中有一个 protobuffer 编译器,在子包中有一个用于所述编译器的插件。使用这个 pom 我希望 Maven 下载指定版本的插件,然后下载它所依赖的编译器。使用 exec 插件,然后我使用一些参数运行编译器,然后将创建的工件打包到一个 jar 中。我们使用多种语言针对多个平台,Maven 在我看来是一个很好的工具。(其中一些是 java,其中没有任何问题的情况。对于非 java 来说,仍然可以使用一些警告 - 就像这个)
-
您能否更具体地说明
protobuffer compiler的含义? -
简而言之,它是 Google 开发的用于序列化和反序列化数据的工具。那不重要。底线是我的 .jars 包含我需要解压缩然后运行的可执行文件(在 bash、cmd 等中,基于平台)。但是,我无法解压缩传递依赖项。
-
稍微想一想...为什么不打包可执行文件并单独部署它们并将它们作为依赖项添加到插件中,这意味着它们将在运行时在插件的类路径上...它们会自动下载...
标签: maven