【发布时间】:2017-10-24 13:11:00
【问题描述】:
我的项目 A 包含以下依赖项:
<dependency>
<groupId>vo.cjm.modules.shared</groupId>
<artifactId>basic</artifactId>
<version>1.0.0</version>
<type>pom</type>
</dependency>
在这个依赖项的 pom 中,我配置了一个插件。但是,在 maven 本地 repo 中安装项目时,永远不会执行此插件。将插件移动到项目A的pom时,执行。
与继承插件的父子maven项目相比,在这里我发现自己处于仅继承依赖项的情况。是不是在使用 pom 类型的时候,只有依赖被继承,没有插件?如果是,如何实现在没有父子结构的maven中继承插件?
我也尝试过使用父项目。在这个项目中,我定义了子模块项目 A。在项目 A 中,我引用了父项目。执行此操作时,maven 会生成“重复版本”错误/警告。消除这种行为的唯一方法是删除项目 A 的版本。现在,项目 A 的版本是从父项目继承的。我希望能够独立管理项目 A 的版本,所以这不是一个选项。
我也尝试使用父项目,并在其中定义一个模块(项目 A)。但是,这仅适用于您将始终在父项目上调用 maven 的假设。在项目 A 上运行 maven,不会继承父项目中的任何内容。
【问题讨论】:
-
我试图回答你的问题,但在我看来,背后可能隐藏着另一个问题。为什么你不想使用父子机制来继承你的插件?是不是像“如果我在父级中定义一个插件,所有子级都将继承,但我只希望这几个项目继承”之类的问题?
-
“孩子”需要自己的版本控制...我想独立构建我的孩子。 Maven 使用自上而下的方法,这意味着您应该始终调用父项目。我不想要这种方法......在子模块中添加父标签时,maven抱怨你有重复的版本......你应该只使用父标签之一。因此,子模块依赖于父模块。我想要颠倒层次结构。 =)
-
使用 Maven,您绝对可以独立地版本和构建您的孩子。如果 Maven 抱怨重复的插件版本,这可能是一个配置问题。确切的问题和错误信息是什么?如果您在父项中定义了
并且在您的子项中的 下再次定义了它们,那么您可能做错了。如果你想在子级继承插件,你应该在你的父级中使用 。但这超出了您最初问题的范围,请随时对其进行编辑以准确解决您的问题,或者可能需要询问另一个问题;) -
试试这个基本的 maven 设置(我使用的是 3.5):只需在父模块中添加一个模块。在模块中引用父级。在模块中,maven 将生成有关重复版本编号的警告/错误...删除模块中的父引用,将使模块工作并拥有自己的版本,但是由于调用了模块本身,因此没有从父级继承任何内容:)无论如何,我用更多细节编辑了我的问题。 ;)
-
感谢您提供详细信息,您能否提供导致错误的两个项目(您的父母和孩子)的相关 pom.xml? (我们会追根究底!)
标签: maven-3 pom.xml maven-plugin