使用maven warpath插件合并多module的war包

使用maven warpath插件合并多module的war包

如今java 项目通常使用maven、gradle等工具来管理jar包、打包、发布。若是一个项目有不少模块,那般是分红多个module,主目录有个parent,负责包含所有的module,而后目录中多个module文件夹,分别依赖parent或者其余module。最近遇到个项目,项目好久,代码所有放在一块儿,随着业务拓展变得与愈来愈庞大,因而其对进行module拆分。 java

问题

  1. 多个模块可能交叉依赖。
  2. 每一个模块可能都会有前台页面的代码,jsp、js等。
  3. maven打包的时候可否war包、jar包一块儿打。

解决方式

  1. 交叉依赖必须解决,尽量多的剥离独立代码,让它成为其余模块以来的包,这个包可使用maven打成jar包。而后拆分其余的模块,能够有顺序依赖,可是不能交叉依赖。
  2. 多个模块都有前台代码,前台代码在maven打包是不须要编译,是直接copy到target目录,而后再打成war包。这样咱们就能够把全部模块的前台代码都抽离出来,当成一个单独的module,如project-web模块,固然也能够不抽离,可是须要用到第三步。
  3. 使用maven插件能够作到war、jar一块儿打。插件名字是maven-jar-plugin。示例pom配置以下(在pom.xml开头中指定打包类型是war):
    <build>        <plugins>        <plugin>        <groupId>org.apache.maven.plugins</groupId>        <artifactId>maven-jar-plugin</artifactId>        <executions>        <execution>        <id>make-a-jar</id>        <phase>compile</phase>        <goals>        <goal>jar</goal>        </goals>        </execution>        </executions>        </plugin>        </plugins>        </build>

执行mvn install就能够获得war和jar包,默认是在target文件夹下。 web

介绍就这些,下面是示例的pom配置,首先parent中的pom.xml(注意parent的打包类型是pom):

<groupId>com.yeetrack.project</groupId>    <artifactId>project-parent</artifactId>    <version>1.0-SNAPSHOT</version>    <packaging>pom</packaging>    <name>My Maven Webapp</name>    <modules>    <module>common</module>    <module>module-one</module>    <module>module-two</module>    <module>module-three</module>    </modules>

在各个模块中配置parent项目(下面是module-one):

<groupId>com.yeetrack.project</groupId>    <artifactId>module-one</artifactId>    <version>1.0-SNAPSHOT</version>    <packaging>jar</packaging>/* 若是此模块有前台代码,那就是war */    <name>module-one</name>    <parent>    <groupId>com.yeetrack.project</groupId>    <artifactId>project-parent</artifactId>    <version>1.0-SNAPSHOT</version>    </parent>

若是module two依赖module one,有两种状况:

继续阅读→

相关文章
相关标签/搜索