首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >打包jar无效聚合器项目需要pom作为打包

打包jar无效聚合器项目需要pom作为打包
EN

Stack Overflow用户
提问于 2013-09-11 14:02:23
回答 2查看 43.4K关注 0票数 48

我的项目有不同的模块。

  • 每个模块都有一个指定jar打包的pom.xml。
  • 每个pom指的是公共父模块。
  • 在父模块中还有一个包含所有模块的pom.xml。

当我尝试使用父模块的pom.xml打包时,它显示错误-“打包jar是无效的聚合器项目需要pom作为打包”。

我可以做什么来使应用程序的可执行jar从maven?

EN

回答 2

Stack Overflow用户

发布于 2013-09-11 15:52:59

简而言之:如果您的父聚合器项目不包含源代码(这是一个很好的做法),只需将以下代码添加到您的父pom.xml:

代码语言:javascript
复制
<packaging>pom</packaging>

如果父项目包含源代码,我强烈建议您:

  • 将此代码移动到新模块中(让我们将其称为commons)
  • make

父项目的子模块

  • commons模块添加为需要它的所有其他模块(可能是所有模块)的依赖项)
  • 在父pom.xml中添加<packaging>pom</packaging> <代码>H213<代码>F214
票数 75
EN

Stack Overflow用户

发布于 2013-09-11 14:38:24

Maven要求父级为packaging pom

您可以通过包含一组插件执行并将它们附加到后续的生命周期阶段,使pom项目表现得就像jar项目一样。这不是一条快乐的道路。相反,下面是。

从面向对象的角度来看,你想要什么?你有一个对象是由一堆其他对象组成的,对吧?换句话说,组合,而不是继承。

您的最终交付由其他(jar)项目组成,即其他项目是最终交付项目的依赖项。您将把其他项目定义为dependency,这样无论谁使用您的最终交付,都知道要获得什么(可传递的)依赖项。或者,可以将最终交付jar打包为"uber-jar",从而包含它的所有依赖项。这一切都取决于如何使用最终交付。

同时,以下两个方面(可能)仍然存在:

  • 父项目(与最终交付项目不同,实际上它也可能是最终交付项目的父项目)定义了其后续子项目之间的共性,这是您应该从继承中期待的。子项目是指通过其POM中的parent配置引用父项目的任何项目。
  • 定义了易于一次构建的modules的项目。模块是使用modules.module引用的项目。这通常(我猜>99%)是在父项目中完成的,但不是必须的。您也可以将它放在最终交付项目中(不影响继承,因为这是一个不同的野兽),但它是非典型的,我不会去那里。
票数 17
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/18733729

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档