凡科网做网站怎么样,专业团队电影,如何建立营销性企业网站论文,通用软件开发查看原文#xff1a;http://www.yeetrack.com/?p899现在java项目一般使用maven、gradle等工具来管理jar包、打包、发布。如果一个项目有很多模块#xff0c;那般是分成多个module#xff0c;主目录有个parent#xff0c;负责包含全部的module#xff0c;然后目录中多个mo…查看原文http://www.yeetrack.com/?p899现在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.pluginsmaven-jar-pluginmake-a-jarcompilejar执行mvn install就可以得到war和jar包默认是在target文件夹下。介绍就这些下面是示例的pom配置首先parent中的pom.xml(注意parent的打包类型是pom):com.yeetrack.projectproject-parent1.0-SNAPSHOTpomMy Maven Webappcommonmodule-onemodule-twomodule-three在各个模块中配置parent项目(下面是module-one)com.yeetrack.projectmodule-one1.0-SNAPSHOTjarmodule-onecom.yeetrack.projectproject-parent1.0-SNAPSHOT如果module two依赖module one有两种情况module-one打jar包(此module没有前台代码)mvninstall后就可以将该模块打成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.projectmodule-one1.0-SNAPSHOTjarsystem${project.basedir}/../module-one/target/module-one-1.0-SNAPSHOT.jar再看依赖war的情况(两个依赖一个都不能少)com.yeetrack.projectmodule-one1.0-SNAPSHOTwarcom.yeetrack.projectmodule-one1.0-SNAPSHOTwarpathOK,这是依赖的配置下面是打包的配置既然它都依赖其他的war了那么它的打包类型也就是war。其实就是在使用maven-war-plugin的基础上添加一个maven-warpath-plugin:org.apache.maven.pluginsmaven-war-pluginWEB-INF/libtrueadd-classesOver,最后打包的时候在parent中执行mvn install即可。