当前位置:网站首页>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()
}
边栏推荐
猜你喜欢
[论文分享] VideoFlow: A Flow-Based Generative Model for Video
浅谈混迹力扣和codeforces上的几个月
Detailed explanation of AtomicInteger
AI智能剪辑,仅需2秒一键提取精彩片段
通信大学生走向岗位,哪些技能最实用?
What skills are the most practical for college students in communications?
codeforces:E. Add Modulo 10【状态压缩 + 找规律】
备战无人机配送:互联网派To C、技术派To B
NIO之Selector执行流程
[Dynamic Programming Special Training] Basics
随机推荐
针对时间的功能测试点,这里给你总结全面了
仿制药的未来商机--个人研发的体会
流量分析第二题
日常开发中,String类中常用的方法
看【C语言】实现简易计算器教程,让小伙伴们为你竖起大拇指
实例033:列表转字符串
7.25 - 每日一题 - 408
安装Mac版Mysql卡在Installation阶段,彻底清理mysql并重装mysql
From the technical panorama to the actual scene, analyze the evolutionary breakthrough of "narrowband high-definition"
面试官:谈谈如何防止消息丢失和消息重复
药品研发--检验记录与检验报告书的书写细则
codeforces:E. Add Modulo 10【状态压缩 + 找规律】
1.0.0到1.0.2的底层数据库表的更新,需要再重新自建数据库吗?
T31开发笔记:metaipc测试
中国科学院院属研究单位
洛谷P4316 绿豆蛙的归宿
MySQL详细安装与配置
LeetCode 2343. 裁剪数字后查询第 K 小的数字
【软考软件评测师】基于经验的测试技术
说一件事