Gradle官方介绍是Build Anything, Automate Everything,Deliver Faster,即构建任何项目,自动化,构建快。
Gradle VS Maven
这是官方跟Maven构建的比较视频
可以明显看到Gradle速度快,显示内容也比较清爽
项目实例
IDEA创建初始项目
so easy..
copy 两个项目,目录结构是这样,这里用1-5标识Gradle配置文件
配置文件详解
1. settings.gradle
- /**
- * rootProject.name 项目名称
- * include 模块名称
- */
- rootProject.name = 'micro-service-framework'
- include 'framework-base'
- include 'framework-web'
- include 'framework-redis'
2. build.gradle
这个相当于maven中的父maven配置
- buildscript {
- ext {
- //spring boot 版本
- bootVersion = '2.0.6.RELEASE'
- }
-
- //私服地址,这个地址适用于gradle自身,比如删除,下面的springboot插件就会找不到
- repositories {
- maven { url 'http://maven.aliyun.com/nexus/content/groups/public/' }
- }
-
- //springboot gradle插件配置
- dependencies {
- 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
- }
-
maven publish使用
在task -> publishing 中有如下几个命令
我认为使用这两个命令就足够了
publishMavenPublicationToMavenLocal 发布项目到本地仓库
publishMavenPublicationToMavenRepository 发布项目到私服
PS:使用apply plugin: 'org.springframework.boot' build必须要指定main class
- 23:26:17: Executing task 'build'...
-
- > Task :framework-base:compileJava NO-SOURCE
- > Task :framework-base:processResources NO-SOURCE
- > Task :framework-base:classes UP-TO-DATE
- > Task :framework-base:jar SKIPPED
- > Task :framework-redis:compileJava UP-TO-DATE
- > Task :framework-redis:processResources NO-SOURCE
- > Task :framework-redis:classes UP-TO-DATE
- > Task :framework-redis:jar SKIPPED
- > Task :framework-web:compileJava UP-TO-DATE
- > Task :framework-web:processResources NO-SOURCE
- > Task :framework-web:classes UP-TO-DATE
- > Task :framework-web:bootJar FAILED
-
- FAILURE: Build failed with an exception.
-
- * What went wrong:
- Execution failed for task ':framework-web:bootJar'.
- > Main class name has not been configured and it could not be resolved
-
- * Try:
- Run with --stacktrace option to get the stack trace. Run with --info or --debug option to get more log output. Run with --scan to get full insights.
-
- * Get more help at https://help.gradle.org
-
- Deprecated Gradle features were used in this build, making it incompatible with Gradle 5.0.
- Use '--warning-mode all' to show the individual deprecation warnings.
- See https://docs.gradle.org/4.10.3/userguide/command_line_interface.html#sec:command_line_warnings
-
- BUILD FAILED in 1s
- 3 actionable tasks: 1 executed, 2 up-to-date
- Main class name has not been configured and it could not be resolved
- 23:26:18: Task execution finished 'build'.
-
framework-web 项目 3. build.gradle
- dependencies {
- //依赖framework-redis项目
- compile project(':framework-redis')
-
- //不需要写版本
- compile('org.springframework.boot:spring-boot-starter-web')
- //不需要写版本
- compile('org.springframework.cloud:spring-cloud-starter-openfeign')
-
- }
framework-redis 项目 4. build.gradle
- dependencies {
- //依赖framework-base
- compile project(':framework-base')
- compile('org.springframework.boot:spring-boot-starter-data-redis')
- }
framework-base 5. build.gradle
- //做为演示没有引入任何jar包
- dependencies {
- }