替代maven,拥抱gradle,基本使用方法

/ 后端 / 没有评论 / 401浏览

最新版本Gradle 7.4.1

maven用着一直挺好使,以前也用过gradle,不过是玩玩,现在新版springboot直接默认就是集成gradle,于是用起来;

比较

gradle打包速度比maven要快,首次打包可能看不太出来,相差不太大;但是gradle增量打包那是飞一般的速度;

1.设置本地仓库

默认使用本地仓库,然后去中央仓库下载到本地;默认本地仓库的位置是:USER_HOME/.m2;

官方的说明:

Gradle 使用与 Maven 相同的逻辑来识别本地 Maven 缓存的位置。如果在 a 中定义了本地存储库位置settings.xml,则将使用此位置。settings.xmlinUSER_HOME/.m2优先于settings.xmlin M2_HOME/conf。如果 no 不可settings.xml用,Gradle 将使用默认位置USER_HOME/.m2/repository。

所以只需要设置环境变量M2_HOME为本地仓库地址,并且在conf中创建配置文件即可;

repositories {
    mavenLocal()
    mavenCentral()
}

2.设置打包名称及打包路径下的其他文件

war {
    archiveFileName = 'wfcm-api.war'
}

processResources {
    from('src/main/java') {
        include '**/*.xml'
        include '**/*.js'
    }
}

3.修改打包后的war或jar位置

默认构建打包到build/libs/,新版命令,构建后进行执行copy

build{
    doLast{
        copy {
            from 'target/libs'
            into 'target'
            include '*.war'
        }
    }
}

完整的配置示例:

plugins {
    id 'org.springframework.boot' version '2.4.3'
    id 'io.spring.dependency-management' version '1.0.11.RELEASE'
    id 'java'
    id 'war'
}

group = 'net.wfkids'
version = '0.0.1-SNAPSHOT'
description = 'wfcm-api'
java.sourceCompatibility = JavaVersion.VERSION_1_8
sourceCompatibility = '1.8'

repositories {
    mavenLocal()
    mavenCentral()
}

bootWar {
    archiveFileName = 'wfcm-api.war'
    buildDir('target')
}

processResources {
    from('src/main/java') {
        include '**/*.xml'
        include '**/*.js'
    }
}

build {
    doLast {
        copy {
            from 'target/libs'
            into 'target'
            include '*.war'
        }
    }
}


dependencies {
    implementation 'org.springframework.boot:spring-boot-starter-actuator'
}

tasks.withType(JavaCompile) {
    options.encoding = 'UTF-8'
}

集成jrebel热部署注意点:

由于idea使用中,maven的编译文件在target/classes中;而gradle则是在out/中,随意修改下配置文件; rebel.xml

<application generated-by="intellij" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://www.zeroturnaround.com" xsi:schemaLocation="http://www.zeroturnaround.com http://update.zeroturnaround.com/jrebel/rebel-2_3.xsd">

	<id>wfcm-api.main</id>

	<classpath>
		<dir name="D:/java/gradle/wfcm/out">
		</dir>
	</classpath>
</application>