如何在Maven中使用POM作为依赖?
有没有办法将pom
类型依赖项添加到我的POM并获取其所有模块?
JavaMail就是一个很好的例子。 Maven Central Repo有一个父POM,名为: com.sun.mail:all:1.5.0 with modules:mail,mailapi,mailapijar,smtp,imap,gimap,pop3和dsn。
但是,“all”artefact只有一个文件: pom.xml
有没有办法将这个“all”artefact作为依赖项添加到我的POM并获取其所有模块? 我90%肯定这不是在Maven中使用依赖项的正确方法,但我希望从Stack上的专家那里听到它。
思路:
-
...pom
-
...pomimport
相关: Netbeans:类型为pom的maven依赖项
你必须去
com.my commons-deps pom
这会将com.my:commons-deps
声明的所有依赖项com.my:commons-deps
给当前的POM。
运用
... ... pom import
在依赖关系管理中作为工件版本的简单“包含”。 因此,它不会在您的项目中添加任何依赖项。
我相信你可以创建自己的POM来聚合你想要的依赖项,然后在原始项目中添加对该聚合pom的依赖。 您仍然必须在依赖项POM中的每个单独模块上添加依赖项,但它将从实际项目POM中抽象出来,并允许在一个地方管理这些依赖项,如果您最终拥有多个依赖项目,这可能会很有用在那组依赖项上。
在您的示例中,您可以创建一个像这样的新pom:
4.0.0 com.mycompany mail-deps 1.0.0 pom com.sun.mail mail 1.5.0 com.sun.mail mailapi 1.5.0 com.sun.mail mailapijar 1.5.0 com.sun.mail imap 1.5.0 com.sun.mail gimap 1.5.0 com.sun.mail pop3 1.5.0 com.sun.mail dsn 1.5.0
然后在原始项目中添加:
... src/main/java/com/mycompany ... com.mycompany mail-deps 1.0.0 pom
简短的回答:你不能在Maven中这样做。
其他答案只使“全部”POM成为依赖。 没有解决问题。 另一个答案是尝试导入“所有”POM的依赖关系。 我不需要依赖项; 我需要“全部”POM的(子)模块。 再次,并没有解决问题。
旁注:我错误地使用了JavaMail库。 我只需要添加一个依赖项: com.sun.mail:javax.mail:1.5.0
如果您要导入的pom包含
部分中定义的
,并且您想要将它们全部导入,则可以尝试下面的代码。
( 免责声明 :我暂时没有这样做):在
部分中,添加像这样的pom依赖项:
kung.fu ninja 1.2.3 import pom
您也可以直接在不需要
位的
部分中定义依赖
,但据我记忆,它应该是作用域import
如上所示。
正如上面已经写过的人:你不能这样做。 但这就是我所做的并且有效。 让我们假设你有一些pom文件(在你的例子中是JavaMail),如下所示:
pom
并且你想把这个pom中提到的所有jar子复制到某个地方。 这就是我所做的,它是快速工作的解决方案
打开原始pom,只需将原始pom文件中的所有依赖项部分复制粘贴到新的pom中。 当然使用maven依赖插件来复制所有。