4

我使用 eclipse 在 maven 上开发一个需要“战争包装”的应用程序引擎项目(使用maven-gae-plugin archetype)。

如何包含其他项目(例如公共库项目),以便在其中一个子项目中完成更改时更新所有内容?

一种解决方案可能是“多模块项目”,但我不明白为什么 maven 要求父项目是 pom 包装。另外,我担心更改为 pom 包装可能会破坏 appengine 的兼容性(执行 dev-server、从 eclipse 插件部署等......)

4

2 回答 2

4

多模块项目不仅是打包库依赖项目的一种方式,确实是一场战争或耳朵。它允许您共享属性、插件、行为......

无论最终结构如何,这是一种将它们链接在一起的方法。他们自己的生命周期是相关的。

所以,做你想做的更好的方法是

/
|your-parent-project
+--pom.xml --> pom
|
+--/your-webapp-project
|  +--pom.xml --> war
|  
+--/your-service-project
|  +--pom.xml --> jar
|  
+--/your-dao-project
|  +--pom.xml --> jar
|  
+--/your-common-resources-project
|  +--pom.xml --> zip

您仍将部署您的战争项目,但父项目将包含有关团队、CI、依赖管理的信息。

您将发布您的父项目(使用 maven-release-plugin 它会自动标记和公会),因为它包含整个生命周期和所有项目之间的关系。

Reactor(maven 排序引擎)将安排构建顺序以匹配您的依赖项,例如。资源、dao、服务、webapp ...

你真的应该阅读 Sonatype 的书: http: //www.sonatype.com/books/mvnref-book/

希望这个小解释能帮到你!

于 2012-06-25T14:02:57.167 回答
1

多模块项目是执行此操作的方法。war 项目应该是一个子模块,并且该项目应该使用 gae-plugin。父项目只是公共库、战争和您可能包含的任何其他项目之间关系的描述。在我们的应用程序中,我们有 2 个战争项目(1 个用于我们的网站,1 个用于在我们应用程序的另一个版本上运行的一些 map-reduce 东西)一个通用代码库(打包为 jar)和一个我们使用的 appengine-remote 项目实用功能。

父级只是一个“pom”的原因是它没有作为可运行代码部署在任何地方。

于 2012-06-25T13:54:44.983 回答