有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

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

这样,每个特定的配置构建可以放在项目jarswarsbuild --> 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

这种分组的主要优点是tasksclientssuppliers是3个不同的、独立的软件部门。当开发人员需要在client扇区中进行更改时,她在文件系统的一小部分中(或者在IDE的ProjectExplorer选项卡中,如Eclipse)拥有所需的一切。反之,在第一个映射中,clients软件部门在项目存储库中被乱放

虽然这可能没什么大不了的,但如果“令人敬畏”的项目开始变得非常庞大,有很多工件等等,那么查找clients扇区的所有相关部分开始变得令人讨厌(并非不可能,IDE为此提供搜索)。 我认为第二种结构更好,从开发人员的角度来看

然而,在maven中实现这个策略似乎很困难:主要的困难是将每个工件的不同构建配置放在哪里(例如,*-ui需要以不同的方式构建)

  • 人们可能会试图将这些配置放在client-uiclient-logicclient-model中,但这意味着到处都有重复的配置构建(例如,client-uisupplier-uitask-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) 个答案