Gradle 使用详解

news2024/10/7 20:27:45

目录

一. 前言

二. 下载与安装

2.1. 下载

2.2. 配置环境变量

2.3. 配置镜像

2.3.1. 全局设置

2.3.2. 项目级设置

三. Gradle 配置文件

3.1. build.gradle

3.2. settings.gradle

3.3. gradle.properties

3.4. init.d 目录

3.5. buildSrc 目录

四. Java Library 插件配置

五. 构建 SpringBoot 多模块项目

5.1. 项目结构

5.2. GradleMultiModule 模块

5.3. GradleParent 模块(公共)

5.4. GradleCommon 模块(公共)

5.5. GradleUtil 模块(公共)

5.6. GradleServer 模块(业务)

5.7. GradleOne 模块(业务)

5.8. GradleTwo 模块(业务)

5.9. GradleStart 启动模块(业务)


一. 前言

    Gradle 是一个基于 Apache Ant 和 Apache Maven 概念的项目自动化构建开源工具。它使用一种基于 Groovy 的特定领域语言(DSL)来声明项目设置,也增加了基于 Kotlin 语言的 kotlin-based DSL,抛弃了基于 XML 的各种繁琐配置,面向 Java 应用为主。当前其支持的语言 C++、Java、Groovy、Kotlin、Scala 和 Swift,计划未来将支持更多的语言。

    Gradle 是一个基于 JVM 的项目构建工具,是一款通用灵活的构建工具,支持 maven、Ivy…多种第三方仓库,支持传递性依赖管理,而不需要远程仓库或者是 pom.xml 和 ivy.xml 配置文件,使用基于 Groovy 编写的集简洁性和可支持语言多样性等特点的 build 脚本文件。

二. 下载与安装

2.1. 下载

安装前置要求:已存在 Java 环境。JDK 配置请参见《JDK 环境变量设置》。

下载官网:https://services.gradle.org/distributions/

下载完成后解压:

2.2. 配置环境变量

在我们的系统环境变量中添加如下配置,步骤如下:

  1. GRADLE_HOME:gradle 的目录;
  2. GRADLE_USER_HOME:gradle 目录下的 repository 目录(解压后需新建);
  3. 在系统的 Path 中配置 %GRADLE_HOME%\bin。

测试 Gradle 是否安装成功,保证必须配置完毕!

2.3. 配置镜像

2.3.1. 全局设置

    在系统当前用户目录下新建一个 init.gradle 文件(也可以在 gradle 中的 init.d 文件夹中新建,在没有指定的情况下是读取当前用户目录下的配置):

在 init.gradle 文件中添加如下配置:

allprojects {
  repositories {
    mavenLocal()
    maven {
      url 'https://maven.aliyun.com/repository/public/'
    }
    maven {
      url 'https://maven.aliyun.com/repository/central'
    }
    mavenCentral()
  }
}

2.3.2. 项目级设置

直接在创建的 Gradle 项目中的 build.gradle 文件中配置:

三. Gradle 配置文件

    在 Gradle 中,可以有多个配置文件来定义构建过程和其他相关设置。其中,最主要的配置文件是 build.gradle,它通常位于项目的根目录下,用于定义项目的构建过程、依赖关系和其他构建相关的设置。

除此之外,还有其他的配置文件:

  • settings.gradle:用于配置 Gradle 的设置,例如定义项目的名称、子项目等信息。
  • gradle.properties:用于定义 Gradle 属性,例如设置构建缓存、定义构建版本等。
  • init.d 目录:用于在 Gradle 初始化时执行自定义的初始化脚本。
  • buildSrc 目录:用于存放与构建相关的代码,例如自定义任务、插件等。

这些配置文件在 Gradle 中扮演着不同的角色,用于定义构建过程、配置构建环境和执行构建任务等。

3.1. build.gradle

    build.gradle 是 Gradle 构建工具的主要配置文件之一,用于定义项目的构建过程、依赖关系和其他构建相关的设置。在该文件中,您可以定义任务、插件、依赖项和其他构建相关设置。

build.gradle 分为项目级和模块级:

  • 项目级:文件存在于根目录下,是整个项目的顶层 build.gradle。该 gradle 一般用来定义全局变量、依赖地址以及相关的清理操作。
  • 模块级:存在于单个子模块下(即模块专属 gradle)。

以下是 build.gradle 文件中最常见的设置:

1. 定义项目名称和版本:

group 'com.example'
version '1.0.0'

2. 添加构建依赖项:

dependencies {
    implementation 'com.google.guava:guava:29.0-jre'
    testImplementation 'junit:junit:4.13.2'
}

3. 定义自定义任务:

task myTask {
    group("MyTask") // 设置分组
    doLast {
        println "This is my custom task."
    }
}

4. 应用插件:

plugins {
    id 'java'
}

5. 定义源代码目录:

sourceSets {
    main {
        java {
            srcDirs = ['src/main/java']
        }
    }
}

6. 配置编译选项:

compileJava {
    options.encoding = 'UTF-8'
}

3.2. settings.gradle

    settings.gradle 是 Gradle 构建工具的配置文件之一,用于配置 Gradle 的全局设置以及多项目构建。在该文件中,您可以定义项目的名称、子项目、Gradle 插件、Gradle 版本等设置。

以下是 settings.gradle 文件中最常见的设置:

1. 定义项目名称:

rootProject.name = 'my-project'

2. 定义子项目:

include 'module1', 'module2'

3. 定义包含子项目的目录:

include 'module1:submodule1', 'module2:submodule2'

4. 排除子项目:

exclude 'module3'

5. 配置 Gradle 插件:

pluginManagement {
    repositories {
        gradlePluginPortal()
        maven {
            url 'https://plugins.gradle.org/m2/'
        }
    }
}

6. 配置 Gradle 版本:

gradle.version = '8.6'

注意:settings.gradle 文件只在多项目构建时才会使用。如果您只需要进行单项目构建,不需要使用 settings.gradle 文件。

3.3. gradle.properties

    gradle.properties 是 Gradle 构建工具的配置文件之一,用于定义构建脚本中使用的变量和属性。该文件通常用于定义一些公共的属性或配置,这些配置可以在构建过程中重复使用,例如依赖版本号、构建工具的版本号等。

以下是 gradle.properties 文件中最常见的设置:

1. 定义依赖版本号:

springVersion=5.3.10

2. 定义构建工具版本号:

gradleVersion=8.6

3. 定义其他属性:

myProperty=value

这些属性可以在 build.gradle 文件中使用。

例如,以下代码演示了如何在 build.gradle 文件中使用 gradle.properties 文件中定义的属性:

dependencies {
    implementation "org.springframework:spring-core:${springVersion}"
}

    此外,还可以在 gradle.properties 文件中定义 Gradle 构建工具的全局配置,例如代理设置、Gradle 守护进程设置等。

    gradle.properties 文件是 Gradle 构建过程中非常重要的一部分,它可以使构建脚本更加模块化和可维护。

注意:如果在 gradle.properties 和 build.gradle 文件中同时定义了同名属性,build.gradle 文件中定义的属性会覆盖 gradle.properties 文件中定义的属性。

3.4. init.d 目录

    init.d 目录是 Gradle 构建工具用于初始化构建的目录之一。在该目录下,您可以添加一些初始化脚本,这些脚本会在 Gradle 构建时被执行。

    通常,init.d 目录下的脚本可以用于执行一些通用的初始化任务,例如设置环境变量、添加仓库、定义插件等。这些脚本可以在多个项目中共享,可以使您的构建脚本更加模块化和可维护。

    默认情况下,Gradle 不会在 init.d 目录下查找任何脚本文件。如果您需要 Gradle 查找并执行 init.d 目录下的脚本,需要在 settings.gradle 文件中添加以下配置:

//启动初始化脚本
enableFeaturePreview('GRADLE_METADATA')
apply from: 'gradle/init.gradle'

    上面的配置启用了 Gradle 的实验特性 GRADLE_METADATA,并在 gradle/init.gradle 脚本中定义了初始化脚本的查找路径。然后,您可以在 gradle/init.d 目录下添加一些脚本文件,这些脚本文件会在 Gradle 构建时被执行。

例如,以下是一个简单的 gradle/init.d 目录下的脚本文件,用于添加一个 Maven 仓库:

allprojects {
    repositories {
        maven {
            url "https://maven.example.com/"
        }
    }
}

注意:init.d 目录下的脚本文件执行的顺序是根据文件名的字母顺序来确定的。如果您需要控制脚本文件的执行顺序,可以在文件名中添加一些数字前缀。例如,01-init.gradle 文件会在 02-init.gradle 文件之前被执行。

3.5. buildSrc 目录

    buildSrc 是 Gradle 构建工具的一个特殊目录,用于创建和管理构建脚本中的插件和依赖。

    buildSrc 目录下的代码会在项目构建之前被编译和执行,并且可以被项目中的其他构建脚本所使用。这意味着您可以在 buildSrc 目录下编写自定义插件或添加依赖,然后在项目的其他构建脚本中使用它们,从而实现更加灵活和可重用的构建过程。

    通常,buildSrc 目录下的代码使用 Gradle 的 Groovy 插件或 Kotlin 插件进行编写,这样可以让您使用相同的语言和 API 来编写项目中的构建脚本和 buildSrc 目录下的代码。

    例如,以下是一个简单的 buildSrc 目录下的 Groovy 代码文件,用于定义一个自定义的任务:

// buildSrc/src/main/groovy/com/example/MyTask.groovy
package com.example
import org.gradle.api.DefaultTask
import org.gradle.api.tasks.TaskAction
class MyTask extends DefaultTask {
    @TaskAction
    void myTaskAction() {
        println "Hello from my task!"
    }
}

然后可以在项目的 build.gradle 文件中使用该自定义任务:

// build.gradle
task myTask(type: com.example.MyTask)

    在这个例子中,buildSrc 目录下的代码定义了一个名为 MyTask 的自定义任务,然后在项目的  build.gradle 文件中使用该自定义任务来创建一个名为 myTask 的任务。

注意:buildSrc 目录下的代码是按照相同的构建流程进行编译和执行的,因此您可以在该目录下使用任何 Gradle API 和依赖。另外,buildSrc 目录会自动添加到构建脚本的 classpath 中,因此您可以在项目的其他构建脚本中直接使用 buildSrc 目录下的代码。

四. Java Library 插件配置

下面的图表描述了在使用 Java Library 插件时如何设置配置:

  • 绿色配置是用户应该用于声明依赖关系的配置。
  • 粉色配置是组件在编译或与库运行时使用的配置。
  • 蓝色配置是组件内部使用的配置,仅供其自身使用。

下一个图表描述了测试配置的设置:

表1,Java Library 插件,用于声明依赖关系的配置:

配置名称

作用

可消

耗性

可解

析性

描述
api声明API依赖关系在这里声明传递导出到消费者的依赖关系,用于编译时和运行时。
implementation声明实现依赖关系在这里声明纯粹为内部使用而不打算向消费者公开的依赖关系(在运行时仍然对消费者公开)。
compileOnly声明仅编译依赖关系在这里声明在编译时需要但在运行时不需要的依赖关系。这通常包括在运行时找到时会被屏蔽的依赖关系。
compileOnlyApi声明仅编译API依赖关系在这里声明模块和消费者在编译时需要但在运行时不需要的依赖关系。这通常包括在运行时找到时会被屏蔽的依赖关系。
runtimeOnly声明运行时依赖关系在这里声明仅在运行时需要而不在编译时需要的依赖关系。
testImplementation测试依赖关系在这里声明用于编译测试的依赖关系。
testCompileOnly声明仅测试编译依赖关系在这里声明仅在测试编译时需要但不应泄露到运行时的依赖关系。这通常包括在运行时找到时会被屏蔽的依赖关系。
testRuntimeOnly声明测试运行时依赖关系在这里声明仅在测试运行时需要而不在测试编译时需要的依赖关系。

表2,Java Library插件,消费者使用的配置:

配置名称作用

可消

耗性

可解

析性

描述
apiElements用于编译此库此配置用于供消费者检索编译此库所需的所有元素。
runtimeElements用于执行此库此配置用于供消费者检索运行此库所需的所有元素。

表3,Java Library插件,库本身使用的配置:

五. 构建 SpringBoot 多模块项目

5.1. 项目结构

-GradleMultiModule
  -GradleParent          包装common、util的父模块(实际中可以不要,这里演示导包、传递依赖等)
    -GradleCommon         公共模块,用于装entity或者mapper等
    -GradleUtil           工具类模块
  -GradleServer          业务模块的父模块,用于给子模块统一导入springboot的包
    -GradleOne            业务模块1 - 依赖GradleCommon、GradleUtil
    -GradleTwo            业务模块2 - 依赖
    -GradleStart          启动模块 - 导入GradleOne、GradleTwo依赖,启动项目

5.2. GradleMultiModule 模块

顶级父模块,统一配置 build.gradle(还可以配置gradle的版本),配置所有模块的关系。

build.gradle 配置:

//插件
plugins {
    id 'java'
    id 'idea'
    id 'java-library'
    id 'org.springframework.boot' version '2.7.15'
    id 'io.spring.dependency-management' version '1.0.15.RELEASE'
}
 
//allprojects:所有模块生效
allprojects {
    // 配置项目信息
    group = 'com.cc'
    version = '0.0.1-SNAPSHOT'
    // 配置字符编码
    tasks.withType(JavaCompile).configureEach {
        options.encoding = 'UTF-8'
    }
 
    java {
        sourceCompatibility = '8'
        targetCompatibility = '8'
    }
 
    //仓库配置
    repositories {
        //本地
        mavenLocal()
        //阿里仓库
        maven { url 'https://maven.aliyun.com/repository/public/' }
        //公司仓库。必须用:https。Gradle默认情况下不允许使用不安全的协议,以提高安全性。
        maven { url 'https://******:****/repository/maven-public/' }
        //中央仓库
        mavenCentral()
    }
 
}
 
//subprojects:所有子模块生效——springboot配置、导包版本管理、打包管理
subprojects {
    apply plugin: 'java'
    apply plugin: 'java-library'
    apply plugin: 'idea'
    //所有子模块都是springboot项目,如不是,不能打包。
    apply plugin: 'org.springframework.boot'
    apply plugin: 'io.spring.dependency-management'
 
    //所有子模块的-依赖版本管理
    dependencyManagement {
        dependencies {
            dependency 'cn.hutool:hutool-all:5.0.7'
            dependency "org.apache.commons:commons-lang3:3.5"
        }
    }
 
    //使用 gradle打包工具
    jar {
        manifest.attributes provider: 'gradle'
    }
 
    tasks.named('test') {
        useJUnitPlatform()
    }
 
}
 
// 配置gradle的版本
wrapper {
    //gradle的版本
    gradleVersion = '8.6'
    //版本类型:BIN、ALL(完全版,可以看gradle的代码)
    distributionType = 'ALL'
}

settings.gradle 配置:

rootProject.name = 'GradleMultiModule'
 
//公共模块总模块
include 'GradleParent'
include ':GradleParent:GradleCommon'
include ':GradleParent:GradleUtil'
project(':GradleParent:GradleCommon')?.name = 'GradleCommon'
project(':GradleParent:GradleUtil')?.name = 'GradleUtil'
 
//业务模块总模块
include 'GradleServer'
include ':GradleServer:GradleStart'
include ':GradleServer:GradleOne'
include ':GradleServer:GradleTwo'
project(':GradleServer:GradleStart')?.name = 'GradleStart'
project(':GradleServer:GradleOne')?.name = 'GradleOne'
project(':GradleServer:GradleTwo')?.name = 'GradleTwo'

5.3. GradleParent 模块(公共)

统一公共模块依赖。

build.gradle 配置:

// 配置所有子模块
subprojects {
    // 这里可以导入公共的依赖
    dependencies {
        // compileOnly:这样做可以确保Lombok在编译时可用,但不会包含在最终的构建产物中,从而减小构建产物的大小。
        // api:依赖可以传递给子模块
        // compileOnlyApi:仅编译时可用,不包含在构建产物中,并且可以传递给子模块
        compileOnlyApi 'org.projectlombok:lombok'
        // 表示将Lombok库作为注解处理器导入。
        annotationProcessor 'org.projectlombok:lombok'
    }
}

5.4. GradleCommon 模块(公共)

公共模块,存放Entity。

build.gradle 配置:

dependencies {
    // api可以传递依赖、implementation不能传递依赖
    // hutool工具类
    api 'cn.hutool:hutool-all'
}

5.5. GradleUtil 模块(公共)

存放所有工具类。

build.gradle 配置:

dependencies {
    // api可以传递依赖、implementation不能传递依赖
    api 'org.apache.commons:commons-lang3'
}

5.6. GradleServer 模块(业务)

业务模块的父模块,用于统一导入 SpringBoot 的包。

build.gradle 配置:

// 子模块生效
subprojects {
    // 配置子模块依赖
    dependencies {
        // 导入业务模块的公共包 - SpringBoot的包
        // 不用api,不用传递
        implementation 'org.springframework.boot:spring-boot-starter'
        implementation 'org.springframework.boot:spring-boot-starter-web'
        testImplementation 'org.springframework.boot:spring-boot-starter-test'
    }
}

5.7. GradleOne 模块(业务)

引入 GradleCommon、GradleUtil 模块,测试是否能使用引入模块的类、引入模块的依赖。

build.gradle 配置:

dependencies {
    // 依赖公共模块
    // api传递给子模块
    api project(":GradleParent:GradleCommon")
    api project(":GradleParent:GradleUtil")
}

5.8. GradleTwo 模块(业务)

引入 GradleCommon、GradleUtil 模块,测试是否能使用引入模块的类、引入模块的依赖。

build.gradle 配置:

dependencies {
    // 依赖公共模块:implementation不传递依赖;api传递依赖
    // 这里不传递依赖,因为会造成GradleStart有多个重复依赖
    implementation project(":GradleParent:GradleCommon")
    implementation project(":GradleParent:GradleUtil")
}

5.9. GradleStart 启动模块(业务)

引入所有业务模块,启动springboot项目。

build.gradle 配置:

dependencies {
    // 依赖GradleOne、GradleTwo,将该模块纳入启动中(加入springboot项目中)
    api project(':GradleServer:GradleOne')
    api project(':GradleServer:GradleTwo')
 
    // 其他依赖项...
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1560744.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

[flask]请求全局钩子

flask从入门到精通之钩子、异常、context、jinjia模板、过滤器 - 异步非阻塞 - 博客园 (cnblogs.com) 参考的这个博客,但有一个需要注意的是,最新版本的flask不知道是不是更新了还是怎么了,他的before_first_request不见了,如果继…

17.应用负载压力测试

早些点,下午题考,最近几年出现的少; 备考较为简单;历年真题相似度高; 主要议题: 1.负载压力测试概述 注意这些测试细微的差别; 负载测试和压力测试的方法比较相似,但是目的不同&a…

科研学习|论文解读——情感对感知偶然信息遭遇的影响研究(JASIST,2022)

原文题目 Investigating the impact of emotions on perceiving serendipitous information encountering 一、引言 serendipity一词最初是由霍勒斯沃波尔创造的,他将其定义为“通过意外和睿智发现你并不追求的事物”。信息研究中大多数现有的偶然性定义从几个角度看…

LeetCode 第391场周赛个人题解

目录 哈沙德数 原题链接 思路分析 AC代码 换水问题 II 原题链接 思路分析 AC代码 交替子数组计数 原题链接 思路分析 AC代码 最小化曼哈顿距离 原题链接 思路分析 AC代码 哈沙德数 原题链接 思路分析 签到题,不说了 AC代码 class Solution:def s…

3月31号总结

java学习 一.面向对象之多态 什么是多态: 多态是在继承/实现情况下的一种现象。表现为对象多态、行为多态。 对象多态:一个对象可以有多种身份,比如一个人,可以是一个父亲,一个老师,或者等等。 行为多…

“‘悦’向新生,与‘榕’同行” 悦榕集团海外酒店中国区巡演圆满收官

三十周年盛会如约而至,来自25家海外酒店及地产代表亮相上海、深圳、成都3城 【中国上海,2024年3月29日】值此悦榕集团成立30周年之际,悦榕集团海外酒店中国区路演活动于上海、成都、深圳三地举行,旗下25家海外酒店和集团海外地产代…

Ch2 Posix IPC

2.1 概述 三种IPC均使用路径名进行标识。路径名既可以是系统中的实际路径名,也可不是,两者的不一致性可能带来移植性问题。 2.2 IPC名字 2.3 创建与打开IPC通道 2.4 IPC权限

milvus knowhere源码编译测试

简介 Knowhere 是 Milvus 的核心向量执行引擎,集成了Faiss、Hnswlib和Annoy等多个向量相似度搜索库。 编译环境 操作系统: Ubuntu 22.04.4 gcc/g:11.4.0 cmake: 3.27.7 安装依赖 apt install build-essential libopenblas-dev libaio-dev python3-dev python…

备考ICA----Istio实验12---配置双向TLS Istio Ingress Gateway实验

备考ICA----Istio实验12—配置双向TLS Istio Ingress Gateway实验 本实验部分配置延续上个Istio实验11 1. 重新配置secret 重新配置secret使其带有ca证书可以验证客户端证书是否合法 先删除原有secret,再配置新的secret # 删除原tls类型的secret kubectl -n istio-system d…

第四十六周:文献阅读+itransfomer

目录 摘要 Abstract 文献阅读:ITtransformer——转置transformer对时间序列预测的实用性 现有问题 提出方法 方法论 研究实验 实验目的 数据集 基线模型 实验结果 研究贡献 模型代码 总结 摘要 本周阅读的文献《Inverted Transformers are Effective…

海康威视【管理员】账号密码泄露【附Poc】

「企业介绍」 海康威视成立于2001年, 是一家专注技术创新的科技公司 ,在安防、智能物联领域耕耘二十余年,业务覆盖全球150多个国家和地区。公司致力于将物联感知、人工智能、大数据技术服务于千行百业,引领智能物联新未来&#x…

【Python】——变量名的命名规则

🎃个人专栏: 🐬 算法设计与分析:算法设计与分析_IT闫的博客-CSDN博客 🐳Java基础:Java基础_IT闫的博客-CSDN博客 🐋c语言:c语言_IT闫的博客-CSDN博客 🐟MySQL&#xff1a…

2024长三角快递物流高质量创新发展论坛

2024长三角快递物流高质量创新发展论坛暨 2024长三角快递物流供应链与技术装备展览会(杭州) 2024年7月8-10日 | 杭州国际博览中心 指导单位:浙江省邮政管理局 中国快递协会 主办单位:浙江省快递行业协会 联合主办:上…

【医学嵌入模型】中文医疗文本处理大模型 PCL-MedBERT

中文医疗文本处理大模型 PCL-MedBERT 提出背景对ELECTRA限制的深入分析eHealth的创新方法实体识别关系抽取 总结 最近再做医学项目,需要从文本中抽取医学概念和关系,通用模型的抽取效果还可以。 但还想找医学嵌入模型,能够更准确地从文本中识…

python---基础(一)

文章目录 前言1.对象的基本组成2.变量和常量2.1.变量的声明2.2.常量_链式赋值_系列解包赋值2.2.1.常量是不是真的常量?2.2.2.链式赋值2.2.3.系列解包赋值 3.内置数据类型_基本算数运算符3.1四种内置数据类型3.2.基本运算符3.3.divmod() 前言 这几年,随着…

Wasm初上手

总之也是为了扩宽技术面吧。。。我也不知道为什么就想试试了,就酱。 参考阅读:极客时间《WebAssembly入门课》 安装wasm的编译器Emscripten。Emscripten 是一个“源到源”语言编译器工具集,这个工具集可以将 C/C 代码编译成对应 JavaScript 代…

JavaScript 入门指南(三)BOM 对象和 DOM 对象

BOM 对象 BOM 简介 BOM(browser Object Model)即浏览器对象模型BOM 由一系列对象组成,是访问、控制、修改浏览器的属性的方法BOM 没有统一的标准(每种客户端都可以自定标准)。BOM 的顶层是 window 对象 window 对象 …

微机原理-基于8086电压报警器仿真系统设计

**单片机设计介绍,微机原理-基于8086电压报警器仿真系统设计 文章目录 一 概要二、功能设计设计思路 三、 软件设计原理图 五、 程序六、 文章目录 一 概要 基于8086电压报警器仿真系统设计是一个综合了硬件和软件设计的复杂过程。以下是该设计概要的主要内容&…

TypeScript-自动编译

1.生成文件 tsc --init 2.修改配置文件 说明:通过CTRLF搜索到以下单词,进行修改。 "strict": true, //是否开启严格模式 "outDir": "./outFile", //表示ts文件最终编译为js文件,js文件存放的位置 3.新…

QML通过鼠标拖动的位置

当通过鼠标拖动Rectangle 的位置时,可以使用Qt Quick的MouseArea组件来实现 Rectangle {id: rectx:0;y:0width: 200; height: 100color: "lightblue"MouseArea {id: mouseAreaanchors.fill: parentdrag.target: rect//要拖动的项目的IDdrag.axis: Drag.XA…