九.多项目构建

xiaoxiao2021-02-28  103

一.项目模块化   在企业项目中,包层次和类关系比较复杂,把代码拆分成模块通常时最佳实践,这需要清晰的划分功能的边界,比如把业务逻辑和数据持久化拆分开来。项目符合高内聚低耦合时,模块化就变得很容易,这是一条分厂好的软件开发实践

二.TODO模块化,分出: 1.Model 2.Repository 3.Web 依赖关系 Web依赖Repository,Repository依赖Model,因此Web也依赖于Model

三.实践 1.todo跟项目(总项目):   build.gradle:   

//group 'com.tiglle.WepApp' //version '1.0-SNAPSHOT' apply plugin: 'java'//gradle的插件,添加会增加相应的gradle命令 apply plugin: 'war'//gradle的插件,添加会增加相应的gradle命令 //所有项目都会继承的配置 allprojects{ //所有项目都引入java插件,但是子项目配置后,会覆盖此配置 apply plugin:'java' //所有项目都引入的依赖 dependencies{ //logback的依赖 compile ('ch.qos.logback:logback-classic:1.2.1') } } repositories { mavenCentral() } ////添加依赖 //dependencies { // //junit的依赖 // testCompile group: 'junit', name: 'junit', version: '4.11' // //bibernate的依赖 // compile 'org.hibernate:hibernate-core:3.6.3.Final' // //logback的依赖 // compile 'ch.qos.logback:logback-classic:1.2.1' //} //排除传递性依赖 //添加依赖 dependencies { //junit的依赖 testCompile group: 'junit', name: 'junit', version: '4.11' //hbernate的依赖 compile ('org.hibernate:hibernate-core:3.6.3.Final'){ //排斥hibernate对slf4j的依赖 exclude group:'org.slf4j',module:'slf4j-api' } //logback的依赖 compile ('ch.qos.logback:logback-classic:1.2.1') } ////取消gradle默认统一使用高版本依赖的策略(gradle默认依赖冲突解决策略) //configurations.all{ // resolutionStrategy{ // failOnVersionConflict() // } //} //强制gradle默认统一使用某个版本依赖的策略(修改gradle默认依赖冲突解决策略) configurations.all{ resolutionStrategy{ failOnVersionConflict() force 'org.slf4j:slf4j-api:1.7.22' } } //闭包,必须声明在调用前面...... def createDir = { path -> //如果文件夹不存在,创建 File dir = new File(path); if(!dir.exists()){ dir.mkdirs(); } } //自定义任务(创建项目文件夹) task makeJavaDir(){ //声明文件夹(字符串数组) def paths = ['src/main/java','src/main/resources','src/test/java','src/test/resource'] //在动作列表的最前面添加动作 doFirst { //循环path,调用闭包 paths.forEach(createDir); } } //创建依赖于其他任务的任务 task makeWebDir(){ //makeJavaDir任务会执行 dependsOn 'makeJavaDir' //声明文件夹的数组(字符串类型) def paths = ['src/main/webapp','src/main/webapp/WEB-INF'] doLast { //循环调用闭包,创建文件夹 paths.forEach(createDir) } }

gradle.properties:

# 项目的通用属性,所有项目会继承 group = 'com.tiglle.WepApp' version = '1.0-SNAPSHOT'

settings.gradle:

//根项目 rootProject.name = 'todo-web' //子项目 include 'model' include 'repository' include 'web' //一个项目有一个跟项目,n个子项目

2.model子项目 build.gradle:

//group 'com.tiglle.WepApp' //version '1.0-SNAPSHOT' apply plugin: 'java' sourceCompatibility = 1.5 repositories { mavenCentral() } dependencies { testCompile group: 'junit', name: 'junit', version: '4.11' } //闭包,必须声明在调用前面...... def createDir = { path -> //如果文件夹不存在,创建 File dir = new File(path); if(!dir.exists()){ dir.mkdirs(); } } //自定义任务(创建项目文件夹) task makeJavaDir(){ //声明文件夹(字符串数组) def paths = ['src/main/java','src/main/resources','src/test/java','src/test/resource'] //在动作列表的最前面添加动作 doFirst { //循环path,调用闭包 paths.forEach(createDir); } }

3.repository子项目 build.gradle:

//group 'com.tiglle.WepApp' //version '1.0-SNAPSHOT' apply plugin: 'java' sourceCompatibility = 1.5 repositories { mavenCentral() } dependencies { testCompile group: 'junit', name: 'junit', version: '4.11' //对子项目依赖的特殊写法 compile project(':model') } //闭包,必须声明在调用前面...... def createDir = { path -> //如果文件夹不存在,创建 File dir = new File(path); if(!dir.exists()){ dir.mkdirs(); } } //自定义任务(创建项目文件夹) task makeJavaDir(){ //声明文件夹(字符串数组) def paths = ['src/main/java','src/main/resources','src/test/java','src/test/resource'] //在动作列表的最前面添加动作 doFirst { //循环path,调用闭包 paths.forEach(createDir); } }

4.web子项目 build.gradle:

//group 'com.tiglle.WepApp' //version '1.0-SNAPSHOT' apply plugin: 'war' repositories { mavenCentral() } dependencies { testCompile group: 'junit', name: 'junit', version: '4.11' //对子项目依赖的特殊写法 compile project(':repository') }

四.idea显示的项目关系

此时执行跟项目的clean等操作,会执行所有子项目的操作

转载请注明原文地址: https://www.6miu.com/read-63805.html

最新回复(0)