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
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>
正确使用上述两个标签, 确保精确使用项目和项目之间的依赖, 避免项目臃肿,编译缓慢,冲突不断
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 终于写完轮子一部分:tcp代理 了,记录一下
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 别再用vector<bool>了!Google高级工程师:这可能是STL最大的设计失误
· 单元测试从入门到精通
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理