赞
踩
搭建gradle项目步骤
官网文档地址:https://docs.gradle.org/current/userguide/userguide.html
# 安装gradle
gradle build
# gradle wrapper
gradlew build # linux
gradlew.bat build # windows
gradle init --type java-application --dsl groovy
# 查询<project>的依赖信息
./gradlew.bat :<project>:dependencies
关联远程git仓库
buildscript {
repositories {
mavenCentral()
maven {
url "https://maven.aliyun.com/repository/public" // 使用aliyun仓库镜像
}
}
// 相当于maven中parent的spring-boot版本
dependencies {
classpath("org.springframework.boot:spring-boot-gradle-plugin:2.7.18")
}
}
dependencies { // 引入依赖的方式 // implementation 声明在编译时需要但不需要暴露给使用此模块的编译器的依赖 // compileOnly 声明只在编译时需要,但在运行时不需要的依赖,例如:lombok // runtimeOnly 声明只在运行时需要,但在编译时不需要的依赖,例如:JDBC驱动 // testImplementation 声明只在测试编译和运行时需要的依赖 // testCompileOnly 只在测试编译时需要的依赖,而在测试运行时不需要 // testRuntimeOnly 测试运行时需要的依赖,而在测试编译时不需要 // annotationProcessor 声明注解处理器的依赖,只在编译期间使用,生成代码或其他编译时工件 // api 用于声明在编译时和运行时都需要的依赖,并且这些依赖对使用此模块的编译器是可见的 // compileClasspath 配置用于定义编译时的类路径,但不会影响运行时的类路径 // runtimeClasspath 配置用于定义运行时的类路径,但不会影响编译时的类路径 // compile 在编译时和运行时都需要的依赖,并且这些依赖对使用此模块的编译器是可见的,已被implementation和api取代 // runtime 声明了在运行时需要的依赖,已被runtimeOnly取代 testImplementation 'org.junit.jupiter:junit-jupiter:5.10.2' compileOnly('org.projectlombok:lombok:1.18.32') annotationProcessor 'org.projectlombok:lombok:1.18.32' testCompileOnly 'org.projectlombok:lombok:1.18.32' testAnnotationProcessor 'org.projectlombok:lombok:1.18.32' }
SpringBoot插件提供的一个任务,用于生成可执行的Jar文件。有一下要求
// 这样引入,代码需要在bootJar的前面
apply plugin: 'org.springframework.boot'
apply plugin: 'io.spring.dependency-management'
bootJar {
archiveBaseName = 'gradleSpring' // jar名称
archiveVersion = '0.1.0' // jar版本
}
// root项目下的build.gradle配置 def buildProjectName = "app" // 在app项目构建之后 // 将app/build/libs/app.jar复制到build/dev、build/test、build/prod // 将app/build/dist/springBoot.sh复制到build/dev、build/test、build/prod // 将app/build/dist/springBoot.bat复制到build/dev、build/test、build/prod ... // 将app/build/dist/application-dev.yml复制到复制到build/dev;app/build/dist/application-test.yml复制到复制到build/test ... // 将上面所复制的文件,文件名-dev、-test、-prod的替换成空串 task buildJar(dependsOn: buildProjectName + ':build') doLast { ["build/dev", "build/test", "build/prod"].each { dest -> copy { from buildProjectName + "/build/libs/" + buildProjectName + ".jar" into dest from buildProjectName + "/dist/springBoot.sh" into dest from buildProjectName + "/dist/springBoot.bat" into dest from buildProjectName + "/dist/startGatewayJavaFx.bat" into dest from(buildProjectName + "/dist/application-".concat(dest.replace('build/', '')).concat(".yml")) into dest rename { String fileName -> fileName.replace('-'.concat(dest.replace('build/', '')), '') } } } file(buildProjectName + "/build").deleteDir() }
// root项目下的build.gradle配置 // 定义钩子函数,在任务完成之后执行 def jarName = "gradleProject.jar" gradle.taskGraph.whenReady { taskGraph -> taskGraph.allTasks.each { task -> if (task.name == 'build') { task.doLast { // project.name == 'gradleProject' 这个放在外层 结果会是true if (project.name == 'gradleProject') { println 'Build task finished, invoke task' // 在这里添加你希望在构建后执行的代码 ["build/dev", "build/test", "build/prod"].each { dest -> copy { from "/build/libs/" + jarName into dest from "/dist/springBoot.sh" into dest from "/dist/springBoot.bat" into dest from "/dist/startGatewayJavaFx.bat" into dest from("/dist/application-".concat(dest.replace('build/', '')).concat(".yml")) into dest rename { String fileName -> fileName.replace('-'.concat(dest.replace('build/', '')), '') } } } } } } } }
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。