700字范文,内容丰富有趣,生活中的好帮手!
700字范文 > springboot+gradle多模块项目分离打包分离jar配置文件

springboot+gradle多模块项目分离打包分离jar配置文件

时间:2022-01-07 20:35:43

相关推荐

springboot+gradle多模块项目分离打包分离jar配置文件

标题

为什么使用gradle而不是maven分离打包有什么优势展示gradle多模块构建目录结构settings.gradle文件配置父模块,build.gradle配置公共模块common build.gradle配置framework模块build.gradle配置api模块build.gradle配置 yml配置文件需要注意最后打包出来的结构lib包中包含了所有的jar包

为什么使用gradle而不是maven

对于开发者而言,maven与gradle带来的实际体验是一样的。因为我们只关注实际的业务开发!这里举例两个我放弃maven的两个点!

1、我需要完成分离jar包的打包方式,而maven的插件始终下载不下来

2、gradle的构建速度确实比maven快

分离打包有什么优势

当我们需要频繁更新项目到生产环境时发现,每次都需要更新很大的jar包,所以我们把一些基础的依赖分离出来!这样我们每次只要更新代码的jar包只有几百KB!在频繁的更新也不慌了

展示gradle多模块构建

目录结构

settings.gradle文件配置

rootProject.name = 'twice-issue'include 'common'include 'framework'include 'api'include 'generator'

父模块,build.gradle配置

// 插件配置,这里指定插件的下载路径buildscript {repositories {mavenLocal()maven {url '/repository/public/' }mavenCentral()}}// 需要引入的插件 applyplugins {id 'java'id 'org.springframework.boot' version '2.4.1' apply falseid 'io.spring.dependency-management' version '1.0.11.RELEASE' apply false}// 子项目配置subprojects {apply plugin: 'org.springframework.boot'apply plugin: 'io.spring.dependency-management'apply plugin: 'java'apply plugin: 'java-library'apply plugin: 'idea'group 'com.mc'version '0.1'sourceCompatibility = JavaVersion.VERSION_1_8targetCompatibility = JavaVersion.VERSION_1_8repositories {mavenLocal()maven {url '/repository/public/' }mavenCentral()}dependencies {implementation 'org.springframework.boot:spring-boot-starter-web'implementation 'org.springframework.boot:spring-boot-starter-test'compileOnly 'org.projectlombok:lombok'annotationProcessor 'org.projectlombok:lombok'}}

公共模块common build.gradle配置

jar.enabled = truebootJar.enabled = falsedependencies {api 'org.springframework.boot:spring-boot-starter-jdbc'api 'org.springframework.boot:spring-boot-starter-validation'api 'org.springframework.boot:spring-boot-starter-security'api 'org.springframework.boot:spring-boot-starter-data-redis'api 'com.baomidou:mybatis-plus-boot-starter:3.4.1'api 'mysql:mysql-connector-java:8.0.22'// 解决springfox-boot-starter打包后缺失org\mapstruct\factory\Mappers问题api 'org.mapstruct:mapstruct:1.4.1.Final'api 'io.springfox:springfox-boot-starter:3.0.0'api 'com.github.xiaoymin:knife4j-spring-ui:3.0.2'api 'com.alibaba:fastjson:1.2.75'}

framework模块build.gradle配置

jar.enabled = truebootJar.enabled = falsedependencies {api project(':common')}

api模块build.gradle配置

dependencies {implementation project(':framework')}// 将依赖包复制到lib目录task copyJar(type: Copy) {// 清除现有的lib目录delete "$buildDir/libs/lib"from pileClasspathinto "$buildDir/libs/lib"}// 拷贝配置文件task copyConfigFile(type: Copy) {// 清除现有的配置目录delete "$buildDir\\libs\\config"from 'src/main/resources'into 'build/libs/config'}// 依赖jar包与主程序分离式打包bootJar {// 引入需要的文件includes = ["common-${project.version}.jar","framework-${project.version}.jar","com/mc/api/**","logback.xml",]// 打包mapper xml文件processResources {from('src/main/java') {include '**/*.xml'}}// 拷贝文件到libdependsOn copyJardependsOn copyConfigFile// 指定依赖包的路径manifest {attributes 'Class-Path': pileClasspath.files.collect {"lib/$it.name" }.join(' ')}}

yml配置文件需要注意

使用gradle指定xml文件时需要指定具体路径不能用**代替!这里我也没深入研究其原因

示例:

mybatis-plus:# mapper.xml 文件路径(需指定具体路径不可用**替代)mapper-locations: classpath:/com/mc/api/mapper/xml/*Mapper.xml

最后打包出来的结构

lib包中包含了所有的jar包

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。