当前位置:   article > 正文

Spring Boot 集成Gradle_spring 对应 gradle

spring 对应 gradle

1、常用配置

//引用插件,必须是gradle官方【https://plugins.gradle.org/】收录的,否则报错
plugins {
    id 'org.springframework.boot' version '2.6.2'
    id 'io.spring.dependency-management' version '1.0.11.RELEASE'
    id 'java-library' //配置war时,打包为war文件;java时,打包为Jar文件
    id 'maven-publish' //用于上传jar到maven仓库
}
//分组
group = 'cn.ming'
//版本
version = '2.0.0-SNAPSHOT'
//JDK版本
sourceCompatibility = JavaVersion.VERSION_1_8
//发布使用JDK版本
targetCompatibility = JavaVersion.VERSION_1_8
//指定编译编码格式,防止中文乱码
compileJava.options.encoding = "UTF-8"
compileTestJava.options.encoding = "UTF-8"
//指定项目编码
tasks.withType(JavaCompile) {
    options.encoding = "UTF-8"
}
//是否允许当前包作为依赖被引用
jar.enabled = true
//是否允许当前包文件被外部引用
tasks.withType(GenerateModuleMetadata) {
    enabled = true
}
//发布(等同于maven install)
publishing {
    publications {
        mavenJava(MavenPublication) {
            from components.java
        }
    }
    repositories {
        mavenLocal()
    }
}
//常量定义,可用于依赖版本统一管理
ext {
    projectVersion = "2.0.0-SNAPSHOT"
}
//依赖
dependencies {
     //Spring Boot应用专属,配合dependency-management使用
    implementation 'org.springframework.boot:spring-boot-gradle-plugin'
}

  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37
  • 38
  • 39
  • 40
  • 41
  • 42
  • 43
  • 44
  • 45
  • 46
  • 47
  • 48
  • 49

2、依赖范围

类型说明对应已弃用版本
implementation会添加依赖到编译路径,并且会将依赖打包到输出,但是在编译时不会将依赖的实现暴露给其他module,也就是只有在运行时其他module才能访问这个依赖中的实现。使用这个配置,可以显著提升构建时间,因为它可以减少重新编译的module的数量。建议,尽量使用这个依赖配置。compile
api会添加依赖到编译路径,并且会将依赖打包到输出,与implementation不同,这个依赖可以传递,其他module无论在编译时和运行时都可以访问这个依赖的实现,也就是会泄漏一些不应该不使用的实现。举个例子,A依赖B,B依赖C,如果都是使用api配置的话,A可以直接使用C中的类(编译时和运行时),而如果是使用implementation配置的话,在编译时,A是无法访问C中的类的。compile(效果完全一致)
compileOnly会把依赖加到编译路径,编译时使用,不会打包到输出。这可以减少输出的体积,只在编译时需要,在运行时可选的情况,很有用。provided
runtimeOnly运行时使用,但不会添加到编译路径apk
annotationProcessor用于注解处理器的依赖配置compile

3、依赖方式

  • 本地library模块依赖
    直接依赖本地库代码,适用于多模块应用。

    • 在settings.gradle下

      include ‘:ming-core-common’
      project(‘:ming-core-common’).projectDir = new File(settingsDir, ‘…/ming-core-common’)

    • 在build.gradle下

      implementation project(‘:ming-core-common’)

  • 本地二进制依赖
    依赖工程中的 module_name/libs/目录下的Jar文件(注意Gradle的路径是相对于build.gradle文件来读取的,所以上面是这样的相对路径)。

    • 所有文件

      implementation fileTree(dir: ‘libs’, include: [‘*.jar’])

    • 单个文件

      implementation files(‘libs/foo.jar’, ‘libs/bar.jar’)

c、远程二进制依赖

implementation ‘cn.ming:ming-core-common:2.0.0-SNAPSHOT’
implementation(‘cn.ming:ming-core-common:2.0.0-SNAPSHOT’)
implementation group: ‘cn.ming’, name: ‘ming-core-common’, version: ‘2.0.0-SNAPSHOT’

4、排除依赖(解决包冲突问题)

dependencies {
    implementation ('com.github.bumptech.glide:glide:4.9.0') {
        exclude group:'com.android.support', module: 'support-fragment'
        exclude group:'com.android.support', module: 'support-core-ui'
        exclude group:'com.android.support', module: 'support-compat'
        exclude group:'com.android.support', module: 'support-annotations'
    }
}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8

5、多环境打包

//测试环境:打JAR包
task bootJarTest {
	println ""
	dependsOn 'clean'
	doFirst {
		System.setProperty("spring.profiles.active", "test")
		System.setProperty("logging.file.path", "D:/logbacktestlog")
		System.setProperty("logging.file.name", "testLog")
	}
	finalizedBy("bootJar")
}
//生产环境:打JAR包
task bootJarProv {
	dependsOn 'clean'
	doFirst {
		System.setProperty("spring.profiles.active", "prov")
		System.setProperty("logging.file.path", "D:/logbackprovlog")
		System.setProperty("logging.file.name", "provLog")
	}
	finalizedBy("bootJar")
}
//默认dev配置
def env = "dev"
//只要是需要通过动态配置的yml参数,必须在processResources中进行初始化配置,否则参数值无法动态注入
processResources {
	doFirst {
		filter ReplaceTokens, tokens: [env: System.getProperty("spring.profiles.active", env)]
		filter ReplaceTokens, tokens: [logPath: System.getProperty("logging.file.path", "")]
		filter ReplaceTokens, tokens: [logName: System.getProperty("logging.file.name", "")]
	}
}

  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32

6、持续更新中

声明:本文内容由网友自发贡献,转载请注明出处:【wpsshop】
推荐阅读
相关标签
  

闽ICP备14008679号