我使用 eclipse 在 maven 上开发一个需要“战争包装”的应用程序引擎项目(使用maven-gae-plugin archetype)。
如何包含其他项目(例如公共库项目),以便在其中一个子项目中完成更改时更新所有内容?
一种解决方案可能是“多模块项目”,但我不明白为什么 maven 要求父项目是 pom 包装。另外,我担心更改为 pom 包装可能会破坏 appengine 的兼容性(执行 dev-server、从 eclipse 插件部署等......)
我使用 eclipse 在 maven 上开发一个需要“战争包装”的应用程序引擎项目(使用maven-gae-plugin archetype)。
如何包含其他项目(例如公共库项目),以便在其中一个子项目中完成更改时更新所有内容?
一种解决方案可能是“多模块项目”,但我不明白为什么 maven 要求父项目是 pom 包装。另外,我担心更改为 pom 包装可能会破坏 appengine 的兼容性(执行 dev-server、从 eclipse 插件部署等......)
多模块项目不仅是打包库依赖项目的一种方式,确实是一场战争或耳朵。它允许您共享属性、插件、行为......
无论最终结构如何,这是一种将它们链接在一起的方法。他们自己的生命周期是相关的。
所以,做你想做的更好的方法是
/
|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/。
希望这个小解释能帮到你!
多模块项目是执行此操作的方法。war 项目应该是一个子模块,并且该项目应该使用 gae-plugin。父项目只是公共库、战争和您可能包含的任何其他项目之间关系的描述。在我们的应用程序中,我们有 2 个战争项目(1 个用于我们的网站,1 个用于在我们应用程序的另一个版本上运行的一些 map-reduce 东西)一个通用代码库(打包为 jar)和一个我们使用的 appengine-remote 项目实用功能。
父级只是一个“pom”的原因是它没有作为可运行代码部署在任何地方。