当前位置:网站首页>Gradle系列——Gradle的build.gradle文件详情,项目发布(基于Gradle文档7.5)day3-3
Gradle系列——Gradle的build.gradle文件详情,项目发布(基于Gradle文档7.5)day3-3
2022-08-02 18:41:00 【简明编程】
Gradle系列——Gradle的build.gradle文件详情(基于Gradle文档7.5)day3-3
build.gradle
- 其实build.gradle文件支持使用Java或Groovy或Kotlin编写
- 每个project都会有一个build.gadle文件该文件是项目构建的入口,可配置版本、插件、依赖库等信息。
- 每个build文件都有一个对应的Project实例.对build.gradle,文件配置,本质就是设置Project实例的属性和方法。
- 由于每个project都会有一个build文件,那么Root Project也不列外Root Project 可以获取到所有Child Project,所以在Root Project的 build文件中我们可以对Child Project统一配置,比如应用的插件、依赖的maven 中心仓库等。
在子工程中可以使用parent获取父工程
build常用方法和属性

解决一些版本,字符集问题(常见属性配置)
//指定使用什么版本的JDK语法编译源代码,跟编译环境有关,在有java插件时才能用
sourceCompatibility = 1.8
//指定生成特定于某个JDK版本的class文件:跟运行环境有关,在有java插件时才能用
targetCompatibility = 1.8
//业务编码字符集,注意这是指定源码解码的字符集[编译器
JcompileJava.options.encoding "UTF一8"
//测试编码字符集,注意这是指定源码解码的字符集[编译器]
compileTestJava. options.encoding "UTF一8"
//编译JAVA文件时采用UTF-8 :注意这是指定源码编码的字符集【源文件】
tasks.withType (JavaCompile) {
options.encoding = "UTF一8"
)
//编译JAVA文件时采用UTF-8 :注意这是指定文档编码的字符集【源文件】
tasks.withType (Javadoc) {
options.encoding ="UTF一8"
)
Repositories(仓库配置)
配置在父工程中,对子工程无效
我们可以在其中配置多个仓库进行使用
repositories i
//gradle中会按着仓库配置的顺序,从上往下依次去对应的仓库中找所需要的jar包:
//如果找到,则停止向下搜索,如果找不到,继续在下面的仓库中查找
//指定去本地某个磁盘目录中查找:使用本地file文件协议:一般不用这种方式
maven {
url 'file: ///D:/gradle/gradleRepos' }
maven {
url "$rootDir/lib/release" }
//指定去maven的本地仓库查找
mavenLocal ()
//指定去maven的私服或者第三方镜像仓库查找
maven {
name "Alibaba" ; url "https : //maven.aliyun . com/repository/public" }maven {
name "Bstek" ; url "https: / /nexus ,bsdn.org/content/groups/public/" }
//指定去maven的远程仓库查找:即https : //repo.maven.apache.org/maven2/
mavenCentral ()
//去google仓库查找
google ()
Subprojects和Allprojects
- Subprojects:当前项目的子工程
- Allprojects:当前项目所有工程
我们可以使用这两个属性进行任务配置等操作
allprojects {
tasks.create ( ' hello ' ) {
println "project name is $task.project.name"
}
}
在父工程中通过project方法操作子工程
如下
project('kid1'){
//书写build.gradle的各种属性
dependencies {
testImplementation 'org.junit.jupiter:junit-jupiter-api:5.7.0'
testRuntimeOnly 'org.junit.jupiter:junit-jupiter-engine:5.7.0'
implementation files('lib/mybatis-plus-spring-starter.jar','lib/mysql-connect-java.jar')
implementation fileTree('dir':'lib',includes: ['*.jar'])
}
}
使用ext扩展用户自定义属性
Project和Task都允许用户添加额外的自定义属性,要添加额外的属性,通过应用所属对象的ext 属性即可实现。添加之后可以通过ext属性对自定义属性读取和设置,如果要同时添加多个自定义属性,可以通过ext代码块
ext{
maker="xxx"
projectVersion="1.0"
sdk=[
minVersion:JavaVersion.VERSION_1_8
]
}
我们使用的时候直接使用$取值即可
项目发布
将写好的模块发布,提供他人使用
发布步骤
1.引入maven发布插件
plugins {
id 'maven-publish'
}
2.设置发布代码
publishing{
publications{
myLibrary(MavenPublication){
groupId = 'cn.fly.xxx'
artifactId = 'xxx'
version = '1.0.1'
from components.java //设置发布jar包
}
}
repositories {
//本地仓库
mavenLocal()
//发布到私服
maven{
name = '私服仓库名称'
url = '本地仓库地址或私服仓库地址'
def releasesRepoUrl = layout.buildDirectory.dir('repos/releases')
def snapshotsRepoUrl = layout.buildDirectory.dir('repos/snapshots')
url = version.endsWith('SNAPSHOT') ? snapshotsRepoUrl : releasesRepoUrl
//配置认证信息
// credentials{
// username='zhangsan'
// password='xxxxxxxx'
// }
}
}
}
3.选择发布指令
generatePomFileForPubNamePublication:生成pom文件publishPubNamePublication.ToRepoNameRepository:发布项目到指定仓库.如果没有仓库名,默认为mavenpublishPubNamePublicationToMavenLocal:将PubName 发布复制到本地Maven仓库中包括POM文件和其他元数据。publish:发布到repositories中指定的仓库(为比如Maven私服)publishToMavenLocal: 执行所有发布任务中的操作发布到本地 maven仓库【默认在用户目录下的.m2/repository】。

生成Javadoc
我们需要添加java-library的插件
plugins {
id 'java-library'
}
并配置如下属性
javadoc.options.encoding="UTF-8"
java{
withJavadocJar()
withSourcesJar()
}
边栏推荐
- 被审稿人吐槽没有novelty!深度学习方向怎么找创新点?
- 日常开发中,String类中常用的方法
- NIO基础之三大组件
- 深入理解IO流(第一篇)
- EasyCVR平台通过国标GB28181接入柯达NVR显示注册失败,该如何解决?
- Openharmony - 基于ArkUI(TS)开发颜色选择器
- 喜迎八一 《社会企业开展应聘文职人员培训规范》团体标准出版发行会暨橄榄枝大课堂上线发布会在北京举行
- [深入研究4G/5G/6G专题-49]: 5G Link Adaption链路自适应-5-上行链路自适应ULLA-PUSCH信道
- 药品研发--检验记录与检验报告书的书写细则
- Jellyfin 打造家庭影院 & 视频硬解 (威联通 QNAP)
猜你喜欢
随机推荐
中国科学院院属研究单位
pydev debugger: warning: trying to add breakpoint to file that does not exist: /tmp/xxx
知识点滴 - 什么是iAP2 (上)
Electronic Industry Inventory Management Pain Points and WMS Warehouse Management System Solutions
日常开发中,String类中常用的方法
小姐姐面试蚂蚁金服被虐经历,心疼...
3年半测试经验,20K我都没有,看来是时候跳槽了
如何获取EasyCVR平台设备通道的RTMP视频流地址?
洛谷P1502 窗口的星星
快手web did可用生成
NIO基础之三大组件
SQL Alias 别名
Jupyter Notebook(Anaconda)——两个环境分别修改默认打开目录(深度学习第一周番外篇)
Detailed explanation of AtomicInteger
[Dynamic Programming Special Training] Basics
请教一个数据库连接池的问题,目前已知是事务未设置超时,又有一块代码事务没有提交,一直把连接给耗尽了,
说一件事
leetcode:622. 设计循环队列【循环队列板子】
元旦快乐(2022)
洛谷P4316 绿豆蛙的归宿









