Java SmartClient项目的Maven用法
为具有SmartClient架构的项目设置Maven的最佳方法是什么?考虑以下软件包:Java SmartClient项目的Maven用法,java,maven-2,enterprise,smartclient,Java,Maven 2,Enterprise,Smartclient,为具有SmartClient架构的项目设置Maven的最佳方法是什么?考虑以下软件包: myproject.core myproject.server myproject.client 当然,每个包中都有几个子包。客户端和服务器都使用核心。我看到两个主要选择: 在myproject中制作一个uber POM,涵盖所有三个方面,并具有某种构建参数来确定要构建的内容 在上面的每个包中制作一个POM(一个用于核心,另一个用于服务器,另一个用于客户端) 以下是我们需要构建的输出(至少): Stan
- myproject.core
- myproject.server
- myproject.client
- Standalone.jar:将启动服务器和客户端的测试应用程序
- war:可以部署到Tomcat的war文件
- Client.jar:没有任何服务器代码的SmartClient
选项1可能吗?如果是,这是否良好的做法?根据我的初步研究,选项2听起来像是最佳实践。然而,当所有代码都密切相关时,从一个POM跳到另一个POM听起来像是我们不需要的额外工作和额外的混乱。我应该坚持选项2吗?Maven有一个一般规则,每个项目应该只有一个工件。换句话说,选项1不允许您在不与maven对抗的情况下生成server.war、client.jar等。这将是一个大混乱,你将无法利用maven插件。不,真的,你不想要这个。因此,只需选择选项2,其结构如下(省略
src
目录):
关于您对从POM跳到POM的担忧,好吧,只要将所有模块导入IDE,您就不会真正注意到它。这对很多人来说都很有效
更新(在评论中涵盖OP中的问题):
与Maven作战听起来并不有趣
不,你将失去:)
pom.xml中根级别的内容是什么
这是用于的父POM。引用该文件:
项目聚合类似于
项目继承。而不是
从中指定父POM
模块,它指定来自的模块
父POM。通过这样做
父项目现在知道它的模块,
如果调用了Maven命令
针对父项目,Maven
然后,命令将被执行到
家长的模块也是如此。做
项目聚合时,必须执行以下操作:
以下:
- 将父POMs包装更改为值“pom”
- 在父POM中指定其模块(子模块)的目录 POMs)
另外,如何启动一个构建,从而生成所有三个工件
正如我们所看到的(也称为“多模块构建”),从聚合项目中启动maven命令。说得好。与Maven作战听起来并不有趣。pom.xml中根级别的内容是什么?“每个项目只有一个工件”是不是意味着Standalone.jar、Server.war和Client.jar应该有一个单独的POM(总共三个POM)?如果我还想要一个Server.jar,一个包含Grizzly的简单服务器,该怎么办?服务器不需要两个POM吗?再次感谢您的帮助。另外,如何启动一个构建,从而生成所有三个工件?请致电一些朋友:)很高兴您发现它很有用。
.
|-- core
| `-- pom.xml
|-- server
| `-- pom.xml
|-- client
| `-- pom.xml
`-- pom.xml