当前位置: 首页 > 软件库 > 程序开发 > 常用工具包 >

mklink

Gradle 目录建立软连接
授权协议 Apache-2.0
开发语言 Java
所属分类 程序开发、 常用工具包
软件类型 开源软件
地区 国产
投 递 者 缑文栋
操作系统 跨平台
开源组织
适用人群 未知
 软件概览

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目录

  • 注: F和G盘为两个不同的磁盘 文件夹指向(软链接) F:\>mklink /j "F:\a" "G:\b" 为 F:\a <<===>> G:\b 创建的联接 1,所有读取写入a文件夹的东东,都在b中, 创建时a文件夹自动生成,如果a存在无法创建 2,在使用中如果b文件夹不存在会发生读取写入错误 3,F 和 G为两块不同的磁盘 文件夹指向(符号链接) F:\>mklink /d "F:\a" "

  • Linux上的符号链接相信很多小伙伴都很熟悉,但Windows上的符号链接很少出现。 Windows系统上的所有符号链接都称为“NTFS符号链接”,它是一种指向NTFS文件系统中另一个对象的对象,称为“目标”,其作用是在NTFS文件系统中创建文件或目录的链接。 符号链接的设计目的是为了提高兼容性,首次出现在Windows Vista中,由于较晚的更新时间和当时已经存在“快捷方式”,所以用户并不太了

  • mklink 命令是在 Windows 操作系统中用来建立软链接 (又称符号链接) 的命令。软链接是一种特殊的文件,它实际上是一个指向另一个文件或目录的快捷方式。当你访问软链接时,系统会自动转到软链接指向的文件或目录。 使用 mklink 命令建立软链接的格式如下: mklink[[/D] | [/H] | [/J]] Link Target

  • 第一步 将C盘C:\Users\JackieZheng\.vscode文件夹剪切到D:\vscode中去 第二步 以管理员身份运行cmd,执行如下命令,建立符号链接在管理员身份下的cmd中输入如下命令 mklink /D "C:\Users\JackieZheng\.vscode" "D:\vscode\.vscode" 两个双引号之间有一个空格 同样对于较大的软件的迁移就可以通过mklink建立

  • 使用mklink连接文件夹的目的: 扩展硬盘空间,方便查看,组织文件和文件夹 命令: mklink /D Link Target Target:实际占用硬盘空间的文件夹。 Link:指向Target的快捷方式,不占用任何硬盘空间(其实是占用的,实际占用4096 bytes,也就是一个文件夹在硬盘上的大小)。 Target和Link可以在不同的硬盘上。 Target和Link所在硬盘都需要为NTFS

  • mklink命令 mklink是windows系统下创建符号链接和硬链接的命令工具,它是一个很好的解决文件系统问题的工具。使用它需要管理员权限。 首先,先来介绍下mklink这个命令: mklink 创建符号链接。 mklink [[/D] | [/H] | [/J]] Link Target /D 创建目录符号链接。默认为文件符号链接。 /H 创建硬链接而非符号链接。 /J 创建目录联接。 Li

  • Windows  mklink命令 软链接目录共享 Mklink命令详细介绍   Windows 7下的mklink命令通过指定参数可以建立出不同形式的文件或目录链接,分为硬链接(hard link)、符号链接(symbolic link)和软链接(联接)(junction)三种。 1.符号链接(symbolic link)   建立一个软链接相当于建立一个文件(或目录),这个文件(或目录)用于指

  • 一.目标:让已经安装在C盘下的Google浏览器虚拟化,避免占用C盘空间(虽然在C盘下还存在它的身影),但是实际安装的位置已经被我们移到了其他盘如D盘下。 二.简要步骤: 打开左下角的开始搜索“cmd”或命令提示符,然后右键管理员运行。 记住GoogleChrome在c盘中的安装路径,把安装在C盘的Google目录,复制一份到其他盘比如D:盘的其他目录下,复制成功后,把c盘的整个Google目录删

  • 命令如下: 1.复制User目录到D盘: robocopy “C:\Users” “D:\Users” /E /COPYALL /XJ 2.强制删除User目录: rmdir “C:\Users” /S /Q 3.创建C盘下的User的软件链接,链接到D盘User目录:mklink /J “C:\Users” “D:\Users” 重装系统后只需重复第二条和第三条命令及可 有了这条命令就再也不怕重

 相关资料
  • 问题内容: 我正在尝试在Android的SD卡上建立一个名为“ images”的目录。这是我的代码,但是不起作用?谁能给我一些建议? 问题答案: 更新: 自Android 10,11 Storage更新以来 ,Google已通过标准编程语言文件操作来限制对Storage的访问。 对于仅针对Android 10(API 29)及更高版本的应用程序,您需要在Android清单文件中声明“ reques

  • 建立在 Mesos 上的软件项目 常驻服务 Aurora 是一个运行在 Mesos之上的服务调度程序。它能充分利用了 Mesos 的可扩展性、容错性以及资源隔离,让你能够运行常驻服务。 Marathon 是建立在 Mesos 上的私有 PaaS平台。它能自动处理硬件或者软件故障,并确保每个应用程序都"永远在线"。 Singularity 是一个调度 Mesos 任务的任务调度器( HTTP API

  • 我的轨道环境是 轨道: 3.2.14, 红宝石: 1.9.3, 系统:ubuntu mysql:5.5.32-0ubuntu0.12.04.1 我创建了一个mysql数据库,为了测试这个数据库,我从我在windows中的mysql workbench连接它。所以,我想展示一下,我在ubuntu中的mysql数据库运行正常 但是,当我在浏览器中运行网站时,我得到错误:active record::c

  • SQLAlchemy 1.4 / 2.0 Tutorial 此页是 SQLAlchemy 1.4/2.0教程 . 上一页: SQLAlchemy 1.4/2.0教程 |下一步: |next| 建立连接-引擎 任何SQLAlchemy应用程序的开始都是一个名为 Engine . 此对象充当连接到特定数据库的中心源,提供工厂和称为 connection pool 对于这些数据库连接。引擎通常是一个只为

  • 设备串口和OBLOQ串口在长时间不进行数据通信后可能会断开连接,通过这条指令可以让设备和OBLOQ之间保持一定频率的数据交换。 请求方式: "|1|3|2000|\r" 或者 "|1|3|-2|\r" 参数: 2000 设置心跳数据发送频率,单位:毫秒,2000表示2秒钟OBLOQ向通信的的设备发送一次数据 -2 参数为负数表示OBLOQ停止发送数据 返回值: "|1|3|\r" Arduino样

  • 问题内容: 我有几个线程在集群系统上从Python并行运行。每个python线程输出到一个目录。每个脚本在输出前检查 mydir是否 存在,如果不存在,则创建它: 但这会产生错误: 我怀疑这可能是由于种族情况造成的,其中一个工作在另一个工作到达之前创建了 目录 。这可能吗?如果是这样,如何避免该错误? 我不确定这是否是竞争条件,所以想知道Python中的其他问题是否会导致这种奇怪的错误。 问题答案

  • 本文向大家介绍Rust 建立项目,包括了Rust 建立项目的使用技巧和注意事项,需要的朋友参考一下 示例 除错 发布 使用--release标记进行构建可以实现某些编译器优化,而这些优化在构建调试版本时不会完成。这使代码运行得更快,但也使编译时间更长一些。为了获得最佳性能,发行版本就绪后应使用此命令。            

  • 问题内容: 在受到谴责之前,请阻止已建立的异常连接。谁可以给我解决方案 问题答案: 那是因为必须在建立连接之前调用该函数。检查此链接 http://developer.android.com/reference/java/net/HttpURLConnection.html#setRequestMethod(java.lang.String) 因此最好在openConnection()之前调用它。