java使用大量工件组织Maven项目的方法
我正试图组织我的maven项目
比如说我的项目叫“真棒”。“awesome”有几个工件,每个工件的构建方式都不同(例如,其中一些可能是使用某些插件构建的,另一些是使用一些其他插件构建的):一般来说,这些构建配置是有限的(假设构建工件的方式最多有3种),但是,每个工件只能用一个构建来构建(例如,utility
工件是用以特定方式配置的maven-jar-plugin
构建的,而工件client-ui
是用以特定方式配置的maven-war-plugin
构建的)
现在,我知道我可以按如下方式组织maven项目:
awesome-root
|---jars
| |--- utility
| |--- client-model
| |--- task-model
| |--- supplier-model
| |--- client-logic
| |--- task-logic
| ---- supplier-logic
|---wars
|--- client-ui
|--- task-ui
---- supplier-ui
这样,每个特定的配置构建可以放在项目jars
和wars
的build --> plugins
部分,而一般属性/依赖项管理/插件管理可以放在awesome-root
部分
问题: 我很快意识到,开发人员生成的工件彼此密切相关,但构建方式不同。在前面的示例中,我们可以注意到工件可以以另一种方式分组:
awesome-root
|--- tasks
| |--- task-model
| |--- task-logic
| ---- task-ui
|--- clients
| |--- client-model
| |--- client-logic
| ---- client-ui
|--- supplier
| |--- supplier-model
| |--- supplier-logic
| ---- supplier-ui
|--- others
|--- utility
这种分组的主要优点是tasks
、clients
和suppliers
是3个不同的、独立的软件部门。当开发人员需要在client
扇区中进行更改时,她在文件系统的一小部分中(或者在IDE的ProjectExplorer选项卡中,如Eclipse)拥有所需的一切。反之,在第一个映射中,clients
软件部门在项目存储库中被乱放
虽然这可能没什么大不了的,但如果“令人敬畏”的项目开始变得非常庞大,有很多工件等等,那么查找clients
扇区的所有相关部分开始变得令人讨厌(并非不可能,IDE为此提供搜索)。
我认为第二种结构更好,从开发人员的角度来看
然而,在maven中实现这个策略似乎很困难:主要的困难是将每个工件的不同构建配置放在哪里(例如,*-ui
需要以不同的方式构建)
人们可能会试图将这些配置放在
client-ui
、client-logic
、client-model
中,但这意味着到处都有重复的配置构建(例如,client-ui
、supplier-ui
、task-ui
具有相同的构建配置):如果需要更改构建配置,则需要更改所有其他副本另一个解决方案可能是在
awesome-root
中声明插件管理,并在每个artifactId中编写插件定义:虽然这似乎更好,但它仍然存在与选项1相同的重复问题使用原型生成具有正确构建配置的POM:同上
配置文件:配置文件不是继承的,它们只依赖于系统属性,而不是maven的属性
我的问题是:
第二种结构在Maven中不可能实现吗?有办法吗
如果不是,我是否需要咬紧牙关,开始第一个结构
还有别的选择吗?(我尽量不提出XY问题,欢迎任何替代方案)
其他信息:
- 操作系统:Ubuntu 18.04.3(仿生),64位
- java版本:openjdk 11.0.4 2019-07-16
- IDE:Eclipse4.10.0
- m2e插件:1.10.0.20181127-2120
谢谢你的回复
共 (0) 个答案