拆分Maven项目的推荐解决方案?

ben*_*rre 14 maven-2

在Maven中拆分大型企业项目的最佳方法是什么?

很容易理解如何像这样垂直分割东西......

  1. 你有一个DAO项目
  2. DAO项目是服务项目的依赖项
  3. Service项目是Web项目的依赖项.

有没有人对Maven.m中划分/拆分真正大型项目的最佳实践有所贡献

sal*_*sal 18

有些事情对我有所帮助

  • 将多模块项目用于相关项目,仅使用相关项目.仅存在于单个EAR中的EJB是此的候选者.EJB和客户端应用程序使用的bo层不是.
  • 每个pom一个工件,每个多模块项目可部署一个 Do not Waste Time试图解决这个问题.
  • 创建包含常见依赖关系集的依赖关系poms.这样,您可以将DAO,jdbc驱动程序和ORM工具包含在一个依赖项中.它还使得将数十个项目升级到最新版本的ORM或DAO变得更加容易.
  • 创建仅用于运行程序集和创建部署集的构建器项目.这将使项目的多个部分保持同步.组装大型复杂企业应用程序通常很复杂,您需要混合使用maven,shell脚本和/或ant:运行任务以及数十个配置文件.将混乱放在远离代码的项目中将会在传播之前包含混乱.
  • 创建测试项目以实现持续集成.在这些poms中定义Web和app服务器以及测试部署信息.使用父项目和公共属性文件将使测试部署更改更容易.
  • 当可以使所有子项目成为子项(或其子项)时,才在父pom中定义distributionManagement.
  • 尽量不要依赖于在每个构建中填充到存储库中的大文件(EAR,WAR).在每个快照上不需要将175mb WAR推送到nexus,这样可以缩短构建时间.
  • 尝试尽可能少地定义事物.DRY构建是一个快乐的构建.使用junit 3.8.2使用源版本1.5或30 poms的30个poms将更难以升级到java 6或junit 4.4.

希望这可以帮助.

  • 对于最新的一点,您可以使用"依赖关系管理"来定义要在"master-pom"和所有子模块中使用的工件的版本,因此升级会减少很多痛苦 (2认同)

Tim*_*Tim 8

我一直很高兴地使用Maven by Example多模块企业项目布局.阅读它以获取灵感并将其用于适合您的方案. 替代文字


Ric*_*ler 7

这里有几点建议:

  • 在公共父级或使用中声明依赖性版本在特定项目的dependencyManagement中声明版本并使用导入范围引用它.
  • 避免使用无版本的插件.在pluginManagement部分中声明插件版本.
  • 在父pom中声明常见的插件配置,尤其是报告配置.
  • 不要在POM中声明存储库.
  • 使用像Nexus这样的存储库管理器
  • 使用属性允许子项目继承配置,但覆盖键值(例如,在distributionManagement的url中)
  • 设置持续集成服务器.开发中的项目应具有SNAPSHOT版本并定期部署到存储库.