我有项目A,其中包含以下依赖项:
<dependency>
<groupId>vo.cjm.modules.shared</groupId>
<artifactId>basic</artifactId>
<version>1.0.0</version>
<type>pom</type>
</dependency>
在这个依赖项的pom中我配置了一个插件。但是,在maven本地存储库中安装项目时,永远不会执行此插件。将插件移动到项目A的pom时,它将被执行。
与继承插件的父子maven项目相比,我发现自己处于只继承依赖项的情况。是否真的在使用pom类型时,只继承了依赖项而没有插件?如果是,如何在没有父子结构的情况下继承maven中的插件?
我也尝试过,使用的是父项目。在这个项目中,我定义了子模块,项目A.在项目A中,我引用了父项目。执行此操作时,maven会生成“重复版本”错误/警告。消除此行为的唯一方法是删除项目A的版本。现在,项目A版本继承自父项目。我希望能够独立管理项目A的版本,所以这不是一个选项。
我还尝试使用父项目,并在那里定义一个模块(项目A)。但是,这只适用于您将始终在父项目上调用maven的假设。在项目A上运行maven,不会继承父项目中的任何内容。
答案 0 :(得分:1)
您必须区分父子机制和依赖机制。
<dependencies>
和<plugins>
元素中声明的每个依赖项和插件<dependencies>
在您的pom中引用依赖关系时,您告诉Maven &#34;我需要在我的项目中使用此工件(jar,pom,other),以及任何其他依赖项artifact也取决于&#34; ,但与此依赖项使用的插件无关。插件仅在使用Maven构建内容时使用。一旦构建了工件并且可用,就没有理由在构建工件时包含这个工件使用的插件 - 想象一下,如果对于你使用的每个依赖项,你有大量的插件你可能不想突然添加到你的建立!使用pom类型时,只继承了依赖项而没有插件吗?
是。当您的依赖项属于pom
类型时,您只是告诉Maven将此pom的所有依赖项添加到当前pom中。
如果是,如何在没有父子结构的情况下继承maven中的插件?
据我所知,你不能。如果要继承插件,则必须使用父pom。
答案 1 :(得分:0)
我说依赖项不是Maven项目对象模型的一部分,所以我说不。
我们正在使用父子架构来重用父母的插件。
我们省略将它们用作快照
parent with plugins +
|
+ another parent with plugins +
| |
| + child artifact uses plugins
+ child artifact uses plugins
等等。
因此父母可以举例说明Java版本,或者他们可以包含子项目可以使用的配置文件。
这些都不是反应堆项目(没有&#34;模块&#34;),只是普通的POM项目,原因如下:为儿童提供插件,配置文件和依赖管理。