gradle

Maven和Gradle的区别

二者都是java语言主流的构建工具, 提供默认的软件包结构,生命周期管理以及依赖管理; Gradle相对于Maven来说减少了冗长的代码, 引入依赖只需要将它的groupId,artifactId和version三者用:连接起来;并调用compile函数就可以啦

Maven的pom文件:

<dependencies>
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-security</artifactId>
    </dependency>
</dependencies>

Gradle基于Groovy语言配置:

dependencies {
    compile("org.springframework.boot:spring-boot-starter-security")
}

总的来说,Gradle相比Maven更简洁,但制品发布需要自己很多额外的操作, 但是Maven会更加灵活,制品发布会更简单, 在Android方面只能使用Gradle

Gradle语法

依赖项添加

示例:

//Gradle7之后使用 implementation 而不是compile, 
dependencies {
    testImplementation 'org.junit.jupiter:junit-jupiter-api:5.8.1'
    testRuntimeOnly 'org.junit.jupiter:junit-jupiter-engine:5.8.1'
    testImplementation 'junit:junit:4.12'
    implementation group: 'redis.clients', name: 'jedis', version: '2.9.0'
    implementation group: 'org.springframework.boot', name: 'spring-boot-starter-redis', version: '1.3.5.RELEASE'
    implementation group: 'org.springframework.data', name: 'spring-data-redis', version: '1.7.2.RELEASE'
}
// 或者使用`:`连接这种格式
	implementation "org.springframework.boot:spring-boot-starter-redis:1.3.5.RELEASE"

添加Maven仓库

repositories {
    maven {
        // 填写官方的仓库地址或者其他国内镜像地址
        url "http://maven.petrikainulainen.net/repo"
    }
}

或者本地仓库

repositories {
    maven {
        // 填写自己本地的仓库路径
        url “../maven-repo”
    }
}

仓库别名

  1. mavenCentral()别名,表示依赖是从Central Maven 2 仓库中获取的。
  2. jcenter()别名,表示依赖是从Bintary’s JCenter Maven 仓库中获取的。
  3. mavenLocal()别名,表示依赖是从本地的Maven仓库中获取的

这些属性在Maven仓库中是必须的,如果你使用其他仓库,一些属性可能是可选的。打个比方,如果你使用Flat directory仓库,你可能只需要指定名称和版本

添加多个依赖项 逗号隔开

dependencies {
    implementation (
        [group: 'foo', name: 'foo', version: '0.1'],
        [group: 'bar', name: 'bar', version: '0.1']
    )
}
dependencies {
    // 快捷`:`
    implementation 'foo:foo:0.1', 'bar:bar:0.1'
}

声明属于不同配置项的依赖

dependencies {
    implementation group: 'foo', name: 'foo', version: '0.1'
    testImplementation group: 'test', name: 'test', version: '0.1'
}
dependencies {
    implementation 'foo:foo:0.1'
    testImplementation 'test:test:0.1'
}

Groovy和Java和Kotlin

三者的区别

Groovy完全兼容Java的语法, 额外提供了很多语法糖, 比Java更加简洁

Java是一门解释型静态强类型语言, 而Groovy是一门动态语言,添加了脚本语言的特性,语法灵活易于阅读和编写,其在执行时需要进行动态类型检查和解释,因此相对较慢

Kotlin是一种静态类型语言,编译为字节码后可以直接在JVM上运行,因此性能更好

maven

Optional和Scope

假如B依赖A, A中optional为true时, 该依赖不会被传递给B项目

不写或者为false, 则会传递

<!-- spring-boot-devtools -->
<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-devtools</artifactId>
    <optional>true</optional> <!-- 表示依赖不会传递 -->
</dependency>

scope元素主要用来控制依赖的使用范围,指定当前包的依赖范围和依赖的传递性

test表示在测试环节有此依赖, 在编译运行打包时不会使用, 最常见的就是测试单元依赖

<dependency>
    <groupId>junit</groupId>
    <artifactId>junit</artifactId>
    <version>4.12</version>
    <scope>test</scope>
</dependency>

正确使用上述两个标签, 确保精确使用项目和项目之间的依赖, 避免项目臃肿,编译缓慢,冲突不断

posted @   好滴都  阅读(18)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 终于写完轮子一部分:tcp代理 了,记录一下
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 别再用vector<bool>了!Google高级工程师:这可能是STL最大的设计失误
· 单元测试从入门到精通
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
点击右上角即可分享
微信分享提示