首先是一个项目包含group、name、version 。
settings.gradle是用来管理多项目的,里面包含了项目的name
/** * rootProject.name 项目名称 * include 模块名称 */ rootProject.name = ‘micro-service-framework‘ include ‘framework-base‘ include ‘framework-web‘ include ‘framework-redis‘
// buildscript 代码块中脚本优先执行 buildscript { // ext 用于定义动态属性 ext { //spring boot 版本 bootVersion = ‘2.0.6.RELEASE‘ } // 自定义 Thymeleaf 和 Thymeleaf Layout Dialect 的版本 ext[‘thymeleaf.version‘] = ‘3.0.3.RELEASE‘ ext[‘thymeleaf-layout-dialect.version‘] = ‘2.2.0‘ // 自定义 Hibernate 的版本 ext[‘hibernate.version‘] = ‘5.2.8.Final‘ //私服地址,这个地址适用于gradle自身,比如删除,下面的springboot插件就会找不到 repositories { mavenCentral() maven { url ‘http://maven.aliyun.com/nexus/content/groups/public/‘ } maven { url ‘https://nexus.xxx.net/repository/maven-public/‘ credentials { username = "zhanghao" password = "mima" } } } // 依赖关系 dependencies { //classpath 声明说明了在执行其余的脚本时,ClassLoader 可以使用这些依赖项----springboot gradle插件配置 classpath("org.springframework.boot:spring-boot-gradle-plugin:${bootVersion}") } } allprojects { //导入使用的插件 apply plugin: ‘java‘ apply plugin: ‘maven‘ //如果导入该插件,你需要指定main class,否则不能打包 //apply plugin: ‘org.springframework.boot‘ apply plugin: ‘io.spring.dependency-management‘ //这个插件用于发布jar包到私服 apply plugin: ‘maven-publish‘ //jdk编译版本 sourceCompatibility = 1.8 //jar包的group ,version配置 group ‘net.178le.micro‘ version ‘0.0.1-SNAPSHOT‘ //私服地址, repositories { maven { url ‘http://maven.aliyun.com/nexus/content/groups/public/‘ } } /** * 导入了springboot,spring cloud的pom文件,能够免去自己管理版本 * PS: 在Spring官网指导上面有另外一种配置,那种配置需要配置main class,一会说明 */ dependencyManagement { imports { mavenBom "org.springframework.boot:spring-boot-starter-parent:${bootVersion}" mavenBom "org.springframework.cloud:spring-cloud-dependencies:Finchley.SR2" } } //私服发布配置 publishing { publications { maven(MavenPublication) { //指定group/artifact/version信息,可以不填。默认使用项目group/name/version作为groupId/artifactId/version groupId = project.group artifactId = project.name version = project.version //如果是war包填写components.web,如果是jar包填写components.java from components.java //配置上传源码 artifact sourceJar { classifier "src" } } } repositories { maven { def releasesUrl = "http://你的私服ip:8081/repository/maven-releases/" def snapshotsUrl = "http://你的私服ip:8081/repository/maven-snapshots/" url = version.endsWith(‘SNAPSHOT‘) ? snapshotsUrl : releasesUrl credentials { username = ‘admin‘ password = ‘admin123‘ } } } } } //这里的配置对子项目生效 subprojects { dependencies { testCompile("org.springframework.boot:spring-boot-starter-test") compile("com.google.guava:guava:28.0-jre") } } //打包源码 task sourceJar(type: Jar) { from sourceSets.main.allJava }
说明:
apply:是应用的插件
dependencies:是用于声明这个项目依赖于哪些jar
在处理依赖时分:
repositories:是一个仓库gradle会根据从上到下的顺序依次去仓库中寻找jar
这里可以进行配置,其中mavenLocal()表示使用本地maven仓库;mavenCentral()使用maven中心仓库 。使用固定的地址,这里可以使用阿里云(maven {url ‘http://maven.aliyun.com/nexus/content/groups/public/‘})的镜像下载速度会快一些,然后也可以使用公司内部的私服地址 。
项目依赖:
dependencies { //依赖framework-base compile project(‘:framework-base‘) compile(‘org.springframework.boot:spring-boot-starter-data-redis‘) }
gradle几个命令:
gradle cleanEclipse eclipse
gradle eclipse
gradle dependencies
gradle调试
在命令后面增加--stacktrace,可查看详细的错误信息
例如:
D:\space2021\gateway2-starter>gradle clean publish --stacktrace
原文:https://www.cnblogs.com/duanxz/p/3738541.html