1 Star 0 Fork 11

cpa519904/java-springboot-gradle-docker

加入 Gitee
与超过 1200万 开发者一起发现、参与优秀开源项目,私有仓库也完全免费 :)
免费加入
文件
克隆/下载
build.gradle 14.01 KB
一键复制 编辑 原始数据 按行查看 历史
吃竹子的程序熊 提交于 2018-06-28 16:27 . 完善整合docker的部分
import com.bmuschko.gradle.docker.tasks.image.*
import org.springframework.boot.gradle.plugin.SpringBootPlugin
/**
*
* ===================================================================================================================
* ===================================================================================================================
* ______ _ _____ __ _ _ _
* | ____| | | / ____| / _(_) | | (_)
* | |__ ___ _ __ _ __ ___ __ _| | | | ___ _ __ | |_ _ __ _ _ _ _ __ __ _| |_ _ ___ _ __
* | __/ _ \| '__| '_ ` _ \ / _` | | | | / _ \| '_ \| _| |/ _` | | | | '__/ _` | __| |/ _ \| '_ \
* | | | (_) | | | | | | | | (_| | | | |___| (_) | | | | | | | (_| | |_| | | | (_| | |_| | (_) | | | |
* |_| \___/|_| |_| |_| |_|\__,_|_| \_____\___/|_| |_|_| |_|\__, |\__,_|_| \__,_|\__|_|\___/|_| |_|
* __/ |
* |___/
* ===================================================================================================================
* ===================================================================================================================
*
* step1.项目构建文件,注意,buildscript块和plugins块必须作为build.gradle脚本的前两个块存在,否则会报错.
*
*/
/**
* ===================================================================================================================
* ------------------------------------------- 引入项目插件 ----------------------------------------------
* ===================================================================================================================
*/
plugins {
id "com.gradle.build-scan" version "1.8" //生成构建分析数据.
id "net.researchgate.release" version "2.7.0" //用于向使用Gradle的项目提供类似Maven的发布过程。
id "com.bmuschko.docker-java-application" version "3.3.6" //通过其远程API管理Docker镜像和容器.
id "com.bmuschko.docker-remote-api" version "3.3.6" //Gradle插件,通过其远程API管理Docker镜像和容器.
id 'org.springframework.boot' version '2.0.1.RELEASE' //spring提供的spring boot插件,主要用到了其依赖管理的功能.
}
/**
* ===================================================================================================================
* ------------------------------------------- 所有项目的通用配置 ----------------------------------------------
* ===================================================================================================================
*/
configure(allprojects) { project ->
//项目基础属性
group 'cn.jpanda' //项目所属组织
version '1.0-SNAPSHOT' //项目版本号
//引入插件
apply plugin: 'java' //java插件
apply plugin: 'maven' //maven插件
apply plugin: 'idea' //IDEA插件
apply plugin: 'eclipse' //eclipse插件
apply plugin: 'org.springframework.boot' //spring boot插件
apply plugin: 'io.spring.dependency-management' //实现maven的依赖统一管理功能
apply plugin: 'com.bmuschko.docker-remote-api'
apply plugin: 'com.bmuschko.docker-java-application'
apply from: "${rootProject.rootDir}/gradle/dependency.gradle" //引入jar包版本配置文件
//JDK版本声明
sourceCompatibility = custom.version.JDK
targetCompatibility = custom.version.JDK
//配置仓库
repositories {
mavenLocal()
maven { url 'http://maven.aliyun.com/nexus/content/groups/public' }
maven { url 'https://repo.spring.io/libs-snapshot' }
maven { url "https://repo.spring.io/snapshot" }
maven { url "https://repo.spring.io/milestone" }
mavenCentral()
jcenter()
maven {
url "https://plugins.gradle.org/m2/"
}
}
//指定项目编码
tasks.withType(JavaCompile) {
options.encoding = "${custom.encoding.OPTIONS}"
}
//在多模块下,授权打包依赖模块
jar {
enabled = true
}
//重打包基础配置
bootJar {
// mainClassName = "jpanda.cloud.EurekaServer"
launchScript()
archiveName = "${project.group}_${project.name}_${project.version}.jar"
}
}
/**
* ===================================================================================================================
* ------------------------------------------- 所有子项目的通用配置 ---------------------------------------------
* ===================================================================================================================
*/
configure(subprojects) {
project ->
dependencyManagement {
overriddenByDependencies = false
dependencies {
imports {
/**
* 通过依赖spring boot dependencies来取代继承spring-boot-starter-parent,
* 该配置可以省略.
*/
mavenBom SpringBootPlugin.BOM_COORDINATES
/**
* 通过依赖spring cloud dependencies 来统一管理spring cloud 的版本
*/
mavenBom "org.springframework.cloud:spring-cloud-dependencies:${custom.version.SPRING_CLOUD}"
}
/**
* mybatis-spring-boot整合包,该项目必须采用dependency来管理版本,而不能使用mavenBom,
* 使用mavenBom可能会导致其依赖的jar包和spring依赖的版本发生冲突.
*/
dependency "org.mybatis.spring.boot:mybatis-spring-boot-starter:${custom.version.SPRING_BOOT_MYBATIS}"
/**
* 阿里巴巴druid数据库连接池
*/
dependency "com.alibaba:druid:${custom.version.ALI_DRUID}"
/**
* fastJson https://mvnrepository.com/artifact/com.alibaba/fastjson
*/
dependency "com.alibaba:fastjson:${custom.version.ALI_FASTJSON}"
/**
* druid数据库连接池和spring-boot整合包
*/
dependency "com.alibaba:druid-spring-boot-starter:${custom.version.SPRING_BOOT_DRUID}"
/**
* 分页插件
*/
dependency "com.github.pagehelper:pagehelper-spring-boot-starter:${custom.version.PAGEHELPER}"
/**
* 对象实体转换工具包
*/
dependency "com.github.jmnarloch:modelmapper-spring-boot-starter:${custom.version.SPRING_BOOT_MODELMAPPER}"
/**
* Apache Commons IO库包含实用程序类,流实现,文件过滤器,文件比较器,endian转换类等等.
*/
dependency "commons-io:commons-io:${custom.version.APACHE_COMMON_IO}"
}
}
}
configure(subprojects) {
project ->
/**
* -============================================================================================================
* -=====================================此处存放业务模块的公共依赖==================================================
* -============================================================================================================
*/
dependencies {
/**
* -=================================================================================-
* - ******************** [运维]性质相关依赖 *************************** -
* -=================================================================================-
*/
//服务监控中心
compile 'org.springframework.boot:spring-boot-actuator'
//eureka注册客户端
compile 'org.springframework.cloud:spring-cloud-starter-netflix-eureka-client'
//全局统一配置中心
compile 'org.springframework.cloud:spring-cloud-starter-config'
//ribbon负载均衡依赖
compile 'org.springframework.cloud:spring-cloud-starter-netflix-ribbon'
//spring cloud openfeign依赖,原feign已经弃用,简化调用方式
compile 'org.springframework.cloud:spring-cloud-starter-openfeign'
//spring cloud hystrix 保护模块
compile 'org.springframework.cloud:spring-cloud-starter-netflix-hystrix'
/**
* -=================================================================================-
* - ******************** [工具/功能]性质相关依赖 *************************** -
* -=================================================================================-
*/
//Json处理工具
compile 'com.alibaba:fastjson'
// Apache Commons IO库包含实用程序类,流实现,文件过滤器,文件比较器,endian转换类等等.
compile 'commons-io:commons-io'
//使用lombok来简化掉编码过程中的通用的方法.
compile 'org.projectlombok:lombok'
//对象映射工具modelMapper
compile 'com.github.jmnarloch:modelmapper-spring-boot-starter'
//spring boot安全依赖
compile 'org.springframework.boot:spring-boot-starter-security'
//自定义配置管理
compile 'org.springframework.boot:spring-boot-configuration-processor'
/**
* -=================================================================================-
* - ******************** [数据库]性质相关依赖 *************************** -
* -=================================================================================-
*/
//阿里巴巴druid数据库连接池
compile 'com.alibaba:druid'
//jdbc相关配置
runtime 'mysql:mysql-connector-java'
// druid数据库连接池和spring-boot整合包
compile 'com.alibaba:druid-spring-boot-starter'
//mybatis-spring-boot整合包
compile 'org.mybatis.spring.boot:mybatis-spring-boot-starter'
//分页插件
compile 'com.github.pagehelper:pagehelper-spring-boot-starter'
//测试依赖
testCompile 'org.springframework.boot:spring-boot-starter-test'
}
}
/**
* ===================================================================================================================
* ------------------------------------------- docker相关配置 ---------------------------------------------
* ===================================================================================================================
*/
configure(subprojects) {
project ->
// Dockerfile文件存放地址
String dockerFileDir = 'build/docker'
//docker文件
String dockFilePath = "${dockerFileDir}/Dockerfile"
docker {
registryCredentials {
url = 'tcp://192.168.1.179:2375'
}
}
/**
* 创建Dockerfile文件.
*/
task createDockerfile(type: Dockerfile) {
//指定脚本分组
group = "docker"
//脚本依赖 build任务
dependsOn build
//指定生成的Dockerfile所处的位置.
destFile = project.file(dockFilePath)
//指定依赖的基础镜像
from 'openjdk:8-jdk-alpine'
//指定作者信息,但是盖指令在较新的版本中已经被遗弃了,推荐使用label命令.
maintainer 'Jpanda "jpanda@aliyun.com"'
//指定挂载目录
volume "/tmp"
//扩展标签
label(['author': 'panda', 'email': 'jpanda@aliyun.com'])
//添加参数
arg "JAR_FILE"
//编译时将jar包保存进去
copyFile('${JAR_FILE}', "app.jar")
//指定脚本执行命令
entryPoint("java", "-Djava.security.egd=file:/dev/./urandom", "-jar", "/app.jar")
}
/**
* 构建基础镜像
*/
task image(type: DockerBuildImage) {
group = 'docker'
dependsOn createDockerfile
//指定Dockerfile文件
inputDir = project.file("build/docker")
dockerFile = project.file(dockFilePath)
//标签
tag = "${project.group}/${project.name}:${project.version}"
//指定在执行build命令时,使用的构建参数.
buildArgs = ["JAR_FILE": "${bootJar.archiveName}"]
/**
* 在构建容器前,将jar包和Dockerfile放置到同一目录下.
*/
doFirst {
copy {
from bootJar
into "${project.buildDir}/docker"
}
}
}
}
/**
* ===================================================================================================================
* ------------------------------------------- 基础配置 ---------------------------------------------
* ===================================================================================================================
*/
/**
* 生成gradlew文件,统一gradle版本,避免因为版本不同产生的问题
*/
task wrapper(type: Wrapper) {
gradleVersion = "4.8"
}
/**
* 生成构建分析报告.
*/
buildScan {
licenseAgreementUrl = 'https://gradle.com/terms-of-service'
//授权
licenseAgree = 'yes'
}
/**
* 关闭父项目的打包功能
*/
bootJar{
enabled=false
}
/**
* 关闭父项目的打包功能
*/
jar{
enabled=false
}
Loading...
马建仓 AI 助手
尝试更多
代码解读
代码找茬
代码优化
Java
1
https://gitee.com/cpa519904/java-springboot-gradle-docker.git
git@gitee.com:cpa519904/java-springboot-gradle-docker.git
cpa519904
java-springboot-gradle-docker
java-springboot-gradle-docker
master

搜索帮助