gradle项目中profile的实现

简介: gradle中并没有直接类似maven中的profile支持,只能变通的用其它方法来处理,在打包不同环境的应用时,通常会遇到二类问题: 一、不同的环境依赖的jar包不同 拿web开发来说,生产环境一般会采用weblogic,jboss这类重量级的容器,通常这类web server已经内置了很多第...

gradle中并没有直接类似maven中的profile支持,只能变通的用其它方法来处理,在打包不同环境的应用时,通常会遇到二类问题:

一、不同的环境依赖的jar包不同

拿web开发来说,生产环境一般会采用weblogic,jboss这类重量级的容器,通常这类web server已经内置了很多第三方的通用jar包,而开发环境,一般采用嵌入式jetty这类轻量级的容器,内置的jar包会少一些,在maven中可以用<scope>provided</scope>来处理,到了gradle中可以这么处理:

build.gradle文件参考下面的写法:

def env = System.getProperty("env") ?: "dev"

apply from: "profile-${env}.gradle"

大概意思是,根据传入的参数env不同,加载不同的profile文件。在同级目录下,要放二个文件(下面演示的场景为,dev环境加载的spring版本为4.1.6,而prod环境加载的spring版本为4.2.3):

profile-dev.gradle

dependencies {
    compile 'org.springframework:spring-core:4.1.6.RELEASE'
    compile 'org.springframework:spring-beans:4.1.6.RELEASE'
    compile 'org.springframework:spring-context:4.1.6.RELEASE'
    compile 'org.springframework:spring-context-support:4.1.6.RELEASE'
    compile 'org.springframework:spring-aop:4.1.6.RELEASE'
}

profile-prod.gradle

dependencies {
    compile 'org.springframework:spring-core:4.2.3.RELEASE'
    compile 'org.springframework:spring-beans:4.2.3.RELEASE'
    compile 'org.springframework:spring-context:4.2.3.RELEASE'
}

编译时,gradle命令这么写:

gradle build -Denv=prod  这样编译的就是prod环境

gradle build -Denv=dev  这样编译的就是dev环境(注:dev是默认环境,所以如果是dev环境,最后的-Denv=dev也可以省略)

 

二、不同的环境,配置的参数不同

思路:为每个环境建不同的目录,把各环境的属性文件按目录存放,编译时动态设置gradle的资源目录

sourceSets {
    main {
        resources {
            srcDirs = ["src/main/resources", "src/main/profile/$env"]
        }
    }
}

在刚才的基础上,再加入这一段即可。

整个项目的结构图如下:

 

示例源代码: https://github.com/yjmyzz/gradle-profile-sample

目录
相关文章
|
Java Spring
在idea中创建spring boot的Gradle项目并启动(有一个小demo)(二)
在idea中创建spring boot的Gradle项目并启动(有一个小demo)(二)
880 1
|
Java Spring
在idea中创建spring boot的Gradle项目并启动(有一个小demo)(三)
在idea中创建spring boot的Gradle项目并启动(有一个小demo)(三)
210 1
|
21天前
|
Java Maven 开发者
gradle项目对比maven项目的目录架构以及对gradle wrapper的理解
gradle项目对比maven项目的目录架构以及对gradle wrapper的理解
25 0
|
2月前
Gradle项目加速构建
Gradle项目加速构建
67 0
|
2月前
|
Java API Maven
Gradle 自动化项目构建-Gradle 核心之 Project
Gradle 自动化项目构建-Gradle 核心之 Project
39 0
|
3月前
|
Java Spring
使用Gradle创建SpringBoot项目
使用Gradle创建SpringBoot项目
321 0
|
3月前
|
Java 测试技术 API
云效流水线构建gradle项目失败提示gradle版本过低如何解决
云效(CloudEfficiency)是阿里云提供的一套软件研发效能平台,旨在通过工程效能、项目管理、质量保障等工具与服务,帮助企业提高软件研发的效率和质量。本合集是云效使用中可能遇到的一些常见问题及其答案的汇总。
238 0
|
3月前
|
Java Maven 数据安全/隐私保护
Gradle笔记 三 Gradle的项目周期和settings 文件
Gradle笔记 三 Gradle的项目周期和settings 文件
77 0
Gradle笔记 三 Gradle的项目周期和settings 文件
|
3月前
|
开发工具 Android开发 开发者
Android 项目编译 Gradle 配置说明
Android 项目编译 Gradle 配置说明
233 0
|
3月前
|
前端开发 Java Maven
Gradle笔记 七 publishing 项目发布(二)
Gradle笔记 七 publishing 项目发布
198 0