如何在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依赖插件来复制所有。