【发布时间】:2020-01-09 07:55:49
【问题描述】:
我正在使用 Eclipse(使用 m2e 插件)开发 J2EE Web 应用程序。如果我的项目包含一些专用于特定客户的类,通常我会将它们分组到特定的包中,例如:
- com.myapp.logic
- com.myapp.logic.customer1
- com.myapp.logic.customer2
所以在部署时我可以使用 Eclipse .jardesc 描述符将它们打包到不同的 JAR 中,获得如下内容:
- myapp.jar
- myapp-customer1.jar
- myapp-customer2.jar
这种方法的优点是,如果我只需要更新 customer1 类,我可以只更新 customer1 jar(如果依赖项没有改变)。
现在我想在我的 webapp 项目中使用 Maven,但我找不到将 jar 分开的解决方案。
使用带有archiveClasses 配置的WAR 插件,我只能为我的类部署一个JAR,我无法配置如何将包拆分为不同的JAR。
我考虑过使用叠加层,但整个项目必须拆分为多个项目,并且可能会变得过于复杂(尤其是如果我有 20/30 个客户)。对于类部署,我只希望“更轻松”拆分。
另外,Maven 有没有办法在 WAR 组装之前将我的类打包到不同的 JAR 中(使用不同的 executions),然后将它们包含到 WAR 中而忽略类的标准部署(或等效 JAR)?
【问题讨论】:
-
我认为这个用例不适用于 Maven。您必须改用 Gradle。
-
使用 Maven,您将创建一个包含共享逻辑 (
com.myapp.logic) 的模块和一个用于每个客户逻辑的模块,然后使用多个模块来生成不同的战争文件。 -
@hotzst 是的,是问题中提到的覆盖方法