九.多项目构建
来源:互联网 发布:淘宝有名的网红店 编辑:程序博客网 时间:2024/05/29 14:45
一.项目模块化
在企业项目中,包层次和类关系比较复杂,把代码拆分成模块通常时最佳实践,这需要清晰的划分功能的边界,比如把业务逻辑和数据持久化拆分开来。项目符合高内聚低耦合时,模块化就变得很容易,这是一条分厂好的软件开发实践
二.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.5repositories { 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.5repositories { 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等操作,会执行所有子项目的操作
阅读全文
0 0
- 九.多项目构建
- gradle构建多项目
- 5 多项目构建
- Gradle多项目构建
- gradle多项目构建
- 从零开始学习Gradle之三---多项目构建
- 从零开始学习Gradle之三---多项目构建
- 从零开始学习Gradle之三---多项目构建
- Gradle入门系列(5):创建多项目构建
- Gradle入门系列(5):创建多项目构建
- Gradle入门系列(5):创建多项目构建
- Gradle入门系列(5):创建多项目构建
- Gradle入门系列(5):创建多项目构建
- Gradle多项目构建并将项目导入到Eclipse
- Gradle多项目构建并将项目导入到Eclipse
- 从零开始学习Gradle之三---多项目构建
- Gradle——依赖管理和多项目构建
- Gradle入门系列(5):创建多项目构建
- Qt之QLabel类的应用
- 总结
- Android中http请求加异步任务加判断是否开启网络并显示在listview上
- mybatis中输入输出映射
- java泛型与c++泛型比较
- 九.多项目构建
- ARM TrustZone技术简介 -- 3 (BL31 Secure Monitor简介)
- HDU 5952 Counting Cliques dfs + 思维
- Jzzhu and Cities CodeForces
- require/include/include_once/require_once()的区别
- 分布式集群(MySQL)
- Android——文本控件——Button
- 牧佑--FileBufferDemo----
- SignalR如何搭建SelfHost服务端(C#)