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”
}
}
仓库别名
- mavenCentral()别名,表示依赖是从Central Maven 2 仓库中获取的。
- jcenter()别名,表示依赖是从Bintary’s JCenter Maven 仓库中获取的。
- 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
[三者的区别]( https://wenku.csdn.net/answer/99b7323f97b3468cb4f6be4083d827db#:~:text=Groovy和kotlin dsl区别 1 语法:Groovy是一种动态语言,其语法灵活且易于阅读和编写。 它具有类似于Java的语法,但添加了脚本语言的特性。 Kotlin是一种静态类型语言,其语法更接近于Java,并且具有更严格的类型检查。 2 性能:由于Groovy是一种动态语言,其在执行时需要进行动态类型检查和解释,因此相对较慢。 ,%E5%8F%AF%E8%AF%BB%E6%80%A7%EF%BC%9A%E7%94%B1%E4%BA%8EGroovy%E7%9A%84%E8%AF%AD%E6%B3%95%E6%9B%B4%E7%81%B5%E6%B4%BB%EF%BC%8C%E5%AE%83%E5%8F%AF%E4%BB%A5%E4%BD%BF%E7%94%A8%E6%9B%B4%E7%AE%80%E6%B4%81%E7%9A%84%E8%AF%AD%E6%B3%95%E6%9D%A5%E7%BC%96%E5%86%99DSL%E3%80%82%20%E8%BF%99%E4%BD%BF%E5%BE%97Groovy%E7%9A%84DSL%E6%9B%B4%E6%98%93%E4%BA%8E%E9%98%85%E8%AF%BB%E5%92%8C%E7%90%86%E8%A7%A3%E3%80%82%20%E8%80%8CKotlin%E7%9A%84%E8%AF%AD%E6%B3%95%E6%9B%B4%E6%8E%A5%E8%BF%91%E4%BA%8EJava%EF%BC%8C%E5%9B%A0%E6%AD%A4%E5%85%B6DSL%E5%8F%AF%E8%83%BD%E4%BC%9A%E7%A8%8D%E5%BE%AE%E5%86%97%E9%95%BF%E4%B8%80%E4%BA%9B%E3%80%82%204%20%E7%94%9F%E6%80%81%E7%B3%BB%E7%BB%9F%EF%BC%9AGroovy%E6%8B%A5%E6%9C%89%E8%BE%83%E9%95%BF%E6%97%B6%E9%97%B4%E7%9A%84%E5%8F%91%E5%B1%95%E5%8E%86%E5%8F%B2%EF%BC%8C%E5%B9%B6%E4%B8%94%E5%9C%A8Gradle%E7%AD%89%E6%9E%84%E5%BB%BA%E5%B7%A5%E5%85%B7%E4%B8%AD%E5%B9%BF%E6%B3%9B%E4%BD%BF%E7%94%A8%E3%80%82%20%E5%9B%A0%E6%AD%A4%EF%BC%8CGroovy%20DSL%E7%9A%84%E7%94%9F%E6%80%81%E7%B3%BB%E7%BB%9F%E7%9B%B8%E5%AF%B9%E8%BE%83%E6%88%90%E7%86%9F%E3%80%82%20)
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>
正确使用上述两个标签, 确保精确使用项目和项目之间的依赖, 避免项目臃肿,编译缓慢,冲突不断

浙公网安备 33010602011771号