mklinkGradle 目录建立软连接
mklink 作为一个 Gradle 插件,用于构建过程中对一些目录建立软连接。
典型的使用场景:
首先,我们开发、构建时使用了固态硬盘和内存虚拟磁盘。
构件过程中,Build 文件夹往往都是清理后重新生成,Build 下文件数量多、磁盘占用空间大,mklink 可以在 Gradle 执行构建任务时,将 Build 目录在恰当的时机建立在内存盘的软连接,达到加速写入和减少固态磁盘消耗目的。
当然,目前市面上的固态磁盘,寿命足以满足开发人员的日常开销,构建过程中的磁盘消耗显得不那么重要,但对于持续集成服务器,经 mklink 作用后,每天省下的固态消耗就很可观了,即使搭载普通固态硬盘的机子也能胜任持续构建工作,内存盘也释放出固态磁盘的一部分占用空间,毕竟塞得太满速度也受影响
使用方法:
- 应用插件
Using the plugins DSL:
plugins {
id "com.mxstrive.gradle.mklink-plugin" version "1.0.4"
}
Using legacy plugin application:
buildscript {
repositories {
maven {
url "https://plugins.gradle.org/m2/"
}
}
dependencies {
classpath "gradle.plugin.com.mxstrive.gradle:mklink:1.0.4"
}
}
apply plugin: "com.mxstrive.gradle.mklink-plugin"
- 配置
mklink {
// 依赖mklink的任务,mklink会在此任务执行前建立软连接,可借助--dry-run去查询确定合适的任务
// next task, which depends on mklink
next = '*'
// 需要进行软连接的目录
// Specifies the new symbolic link name
link = "${project.projectDir}\\build"
// 软连接目的路径,这里R就是一个内存盘驱动
// Specifies the path (relative or absolute) that the new link refers to.
target = "R:\\Build\\${project.name}"
// [可选] 当目标的根路径不存在时允许继续构建
// [optional] Allow build continue when the root path of target not exist
allowNoRootPath = true
}
注意:
在应用插件时:
apply plugin: "com.mxstrive.gradle.mklink-plugin",在插件顺序上尽量置后,mklink需要在读取到next指示的任务之后,将自己设置为该的任务的依赖
如:插件java会生成Build目录,现在需要将Build进行软连接到其他路径,mklink插件需要配置在java插件之后
apply plugin: 'java'
apply plugin: 'com.mxstrive.gradle.mklink-plugin'
执行gradle build --dry-run,可以看到
:mklink SKIPPED
:compileJava SKIPPED
:processResources SKIPPED
:classes SKIPPED
:jar SKIPPED
:assemble SKIPPED
:compileTestJava SKIPPED
:processTestResources SKIPPED
:testClasses SKIPPED
:test SKIPPED
:check SKIPPED
:build SKIPPED
mklink任务会在compileJava任务之前执行,软连接好Build目录
评论