繁体   English   中英

Maven WAR:为不同的包拆分类 JAR

[英]Maven WAR: split classes JAR for different packages

我正在使用 Eclipse(使用 m2e 插件)开发 J2EE Web 应用程序。 如果我的项目包含一些专用于特定客户的类,通常我会将它们分组到特定的包中,例如:

  • com.myapp.logic
  • com.myapp.logic.customer1
  • com.myapp.logic.customer2

所以在部署时,我可以使用 Eclipse .jardesc 描述符将它们打包到不同的 JAR 中,获得如下内容:

  • 我的应用程序文件
  • myapp-customer1.jar
  • myapp-customer2.jar

这种方法的优点是,如果我只需要更新 customer1 类,我只能更新 customer1 jar(如果依赖项没有改变)。

现在我想在我的 webapp 项目中使用 Maven,但我找不到将 jars 分开的解决方案。 使用带有archiveClasses配置的 WAR 插件我只能为我的类部署一个 JAR,我无法配置如何将包拆分为不同的 JAR。

我曾考虑使用叠加层,但整个项目必须拆分为多个项目,而且可能会变得过于复杂(尤其是在我有 20/30 客户的情况下)。 我宁愿只对类部署进行“更轻”的拆分。

或者,Maven 有没有办法在 WAR 组装(使用不同的executions )之前将我的类打包到不同的 JAR 中,然后将它们包含到 WAR 中,而忽略类的标准部署(或等效的 JAR)?

如果你想使用Maven,如果你想将不同jar中的代码分开,最好创建一个多模块项目。

所以你会有:

  1. 一个父 pom(包装 pom)
  2. 一个或多个实用罐(包装罐)
  3. 一战打包应用(打包战)

这是一个完整的示例(实际上构建了一个 EAR,但如果您不需要,您可以跳过 EAR):

https://howtodoinjava.com/maven/multi-module-project-eclipse/

如果您需要为客户分开,您可以使用 Maven 配置文件来做到这一点:

    <profile>
        <id>customer2</id>
        <dependencies>
             <dependency>
                <groupId>myGroup</groupId>
                <artifactId>artificatCustomer2</artifactId>
            </dependency>        


    <profile>
        <id>customer1</id>
        <dependencies>
             <dependency>
                <groupId>myGroup</groupId>
                <artifactId>artificatCustomer1</artifactId>
            </dependency>        

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM