查看原文:http://www.yeetrack.com/?p=899

现在java

项目一般使用maven、gradle等工具来管理jar包、打包、发布。如果一个项目有很多模块,那般是分成多个module,主目录有个parent,负责包含全部的module,然后目录中多个module文件夹,分别依赖parent或者其他module。最近有个项目,项目很久,代码全部放在一起,随着业务拓展变得与越来越庞大,于是其对进行module拆分。

问题

多个模块可能交叉依赖。

每个模块可能都会有前台页面的代码,jsp、js等。

maven打包的时候能否war包、jar包一起打。

解决方式

交叉依赖必须解决,尽可能多的剥离独立代码,让它成为其他模块以来的包,这个包可以使用maven打成jar包。然后拆分其他的模块,可以有顺序依赖,但是不能交叉依赖。

多个模块都有前台代码,前台代码在maven打包是不需要编译,是直接copy到target目录,然后再打成war包。这样我们就可以把所有模块的前台代码都抽离出来,当成一个单独的module,如project-web模块,当然也可以不抽离,但是需要用到第三步。

使用maven插件可以做到war、jar一起打。插件名字是maven-jar-plugin。示例pom配置如下(在pom.xml开头中指定打包类型是war):

org.apache.maven.plugins

maven-jar-plugin

make-a-jar

compile

jar

执行mvn install就可以得到war和jar包,默认是在target文件夹下。

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

com.yeetrack.project

project-parent

1.0-SNAPSHOT

pom

My Maven Webapp

common

module-one

module-two

module-three

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

com.yeetrack.project

module-one

1.0-SNAPSHOT

jar

module-one

com.yeetrack.project

project-parent

1.0-SNAPSHOT

如果module two依赖module one,有两种情况:

module-one打jar包(此module没有前台代码)

mvn

install后,就可以将该模块打成jar包,然后安装到本地maven仓库,module-two就可以直接依赖,添加dependency即可。

module-two打war、jar同时打(此模块有前台代码)

同时打war、jar方法,去看上面的第三步,打出war、jar包后。maven将module-one的war包安装到本地仓库,将jar包放在它的target文件夹中。这样module需要依赖jar包,也需要war包(合并到自己的war中)。首先看依赖jar的dependency:

com.yeetrack.project

module-one

1.0-SNAPSHOT

jar

system

${project.basedir}/../module-one/target/module-one-1.0-SNAPSHOT.jar

再看依赖war的情况(两个依赖,一个都不能少):

com.yeetrack.project

module-one

1.0-SNAPSHOT

war

com.yeetrack.project

module-one

1.0-SNAPSHOT

warpath

OK,这是依赖的配置,下面是打包的配置,既然它都依赖其他的war了,那么它的打包类型也就是war。其实就是在使用maven-war-plugin的基础上添加一个maven-warpath-plugin:

org.apache.maven.plugins

maven-war-plugin

WEB-INF/lib

true

add-classes

Over,最后打包的时候,在parent中执行mvn install即可。

java war包合并,使用maven warpath插件合并多module的war包相关推荐

  1. 成功解决打包时不能import自定义的包或库出现运行exe时No module named 缺少包

    成功解决打包时不能import自定义的包或库出现运行exe时No module named 缺少包 目录 解决问题 解决方法 T1.转移 T2.采用下列方法 T3.添加路径

  2. cdh 添加jar包_使用maven下载cdh版本的大数据jar包

    MyEclipse SVN安装方法 方法一:在线安装 1.打开HELP->MyEclipse Configuration Center.切换到SoftWare标签页. 2.点击Add Site ...

  3. java工程打成jar包 - 使用maven assembly插件打包及手动打包

    在java工程打包的过程中遇到过不少问题,现在总结一下.一种是典型的maven工程打包,依赖的jar包全都在pom.xml中指定,这种方式打包很方便:另一种是依赖了本机jar包(不能通过pom.xml ...

  4. maven java archetype_使用Maven Archetype插件构建Maven工程原型模板的实例

    创建原型模板 1.在空目录运行archetype:generate上面的命令,待下载完必要的jar包后,首先需要输入内置的原型编号: Choose archetype: 1: internal -&g ...

  5. Maven常用插件介绍及如何打一个瘦jar包

    目录 零:说在前面 一:常用插件的介绍 二:常用插件的对比 三:打一个瘦jar包 3.1:背景 3.2:解决方案 四:插件应用举例 4.1:maven-jar-plugin 举例及部分说明 4.2:m ...

  6. 分享一个java输出pdf的依赖包,非maven,包名:spire.pdf.jar 下载

    分享一个java输出pdf的依赖包,非maven,包名:spire.pdf.jar http://repo.e-iceblue.cn/#browse/browse:maven-public:e-ice ...

  7. java poi jar maven_导出maven项目依赖的jar包(图文教程)

    注意使用mvn命令是需要配置好maven的环境变量 一.导出到自定义目录中 在maven项目下创建lib文件夹,输入以下命令: mvn dependency:copy-dependencies -Do ...

  8. maven常用插件配置

    常用插件配置详解 Java代码    <!-- 全局属性配置 --> <properties> <project.build.name>tools</proj ...

  9. Java Build工具Ant与Maven之比较

    Java Build工具Ant与Maven之比较 阅读协议:我首先声明本文为翻译文章.译者--我--并不一定认可本文原作者的观点,同时也不保证译者能正确地.清楚地表达出原作者的思想.凡是读者因看了本文 ...

最新文章

  1. 令人拍案叫绝的Wasserstein GAN
  2. 07机器学习实战k-means
  3. leetcode算法题--字符串相乘
  4. 广域网应用场景包括哪些?—Vecloud
  5. 组件化开发思想||全局组件注册语法||组件注册注意事项
  6. zynq网络时钟控制寄存器_【干货分享】ZYNQ开发基本流程
  7. Linux C : TCP/IP 和 网络编程
  8. 【Qt】创建线程程序示例
  9. LeetCode MySQL 1607. 没有卖出的卖家
  10. realtek网卡mac硬改工具_浅谈设备异常、手机硬改参数
  11. python编程入门书籍-编程小白的第一本 Python 入门书
  12. MATLAB神经网络应用之Elman神经网络
  13. Visio从安装到使用完整版
  14. [转载] 怎样彻底卸载anaconda?
  15. 七.其他技术-Beetl与BeetlSQL
  16. 小米4进入开发者模式
  17. 【Android安全】Oneplus 5T 救砖 刷机 root并通过SafetyNet Attestation检测
  18. 《奇葩说》救猫还是救画,我做了认真的分析
  19. scala 打印乘法口诀表
  20. JointJS:可与Visio相媲美的开源在线制图工具

热门文章

  1. 【iCore1S 双核心板_ARM】例程三:EXTI中断输入实验——读取ARM按键状态
  2. IOS 设置文件是否使用ARC
  3. OpenscenGraph中控制swapbuffer的方法(用于多机大屏幕同步显示机制)
  4. Android平台各类恶意软件及病毒概览
  5. 安装Windows 2003 域控制器
  6. 深入理解Linux内存映射机制
  7. 如何让DataGrid能够在客户端点击某一行的任意位置,而触发服务端的事件(Asp.net)...
  8. vivado 如何创建工程模式_基于Vivado的FPGA高性能开发研修班2019年8月30日上海举行...
  9. Kafka集群安装--测试--关闭
  10. jsp放在web-inf下的注意事项