当前位置:网站首页>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()
}
边栏推荐
- Boyun Selected as Gartner China DevOps Representative Vendor
- pydev debugger: warning: trying to add breakpoint to file that does not exist: /tmp/xxx
- AtomicInteger详解
- Monitor is easy to Mars debut: distributed operations help TOP3000 across management gap
- 有哪些好用的实时网络流量监控软件
- 洛谷P2345 MooFest G
- 元旦快乐(2022)
- 快手web did可用生成
- Mppt photovoltaic maximum power point tracking control matlab simulation
- 有什么好用的IT资产管理软件
猜你喜欢

From the technical panorama to the actual scene, analyze the evolutionary breakthrough of "narrowband high-definition"

Jupyter Notebook(Anaconda)——两个环境分别修改默认打开目录(深度学习第一周番外篇)

【C语言刷题】Leetcode169——多数元素

LeetCode 2353. 设计食物评分系统(sortedcontainers)

VSTO踩坑记录(1)- 从零开始开发outlook插件

pydev debugger: warning: trying to add breakpoint to file that does not exist: /tmp/xxx

喜迎八一 《社会企业开展应聘文职人员培训规范》团体标准出版发行会暨橄榄枝大课堂上线发布会在北京举行

What are the useful real-time network traffic monitoring software

“12306”的架构到底有多牛逼?

Mppt光伏最大功率点跟踪控制matlab仿真
随机推荐
「日志」深度学习 CUDA环境配置
C#里如何简单的校验时间格式
请教一个数据库连接池的问题,目前已知是事务未设置超时,又有一块代码事务没有提交,一直把连接给耗尽了,
流量分析三—远程登陆
洛谷P1502 窗口的星星
中国科学院院属研究单位
LeetCode 2343. 裁剪数字后查询第 K 小的数字
[Dynamic Programming Special Training] Basics
动态折线图,制作原来是这么简单
想通过FC连接RDS mysql。是不是将FC服务角色添加rds权限后,就可以通过地址,端口建连了呢
LeetCode 2349. 设计数字容器系统(SortedSet)
Why young people are snapping up domestic iPhone, because it is much cheaper and more populist
洛谷P4316 绿豆蛙的归宿
有哪些好用的实时网络流量监控软件
请教下,1.0.0和1.0.2的底层数据库表结构有变化吗?
新公链时代的跨链安全性解决方案
麦聪DaaS平台 3.7.0 Release 正式发布:全面支持国际化
深度学习-学习笔记(持续更新)
备战无人机配送:互联网派To C、技术派To B
平稳发展 | 西欧地区手游玩家的数据和洞察