标签:插件 仓库 jar publish maven 发布 components
一、maven-publish介绍
在 Gradle 1.3 中,引入了一种新的发布机制。这种新机制引入了一些新概念和功能,这些功能使 Gradle 发布变得更加强大,现在已成为发布工件的首选选项。
二、maven-publish使用
1、在 build.gradle 声明插件
plugins {
id 'maven-publish'
}
2、使用publishing{}块进行配置
group = 'org.example'
version = '1.0'
publishing {
publications {
myLibrary(MavenPublication) {
from components.java
}
}
repositories {
mavenLocal()
}
}
上面我们定义了一个名为myLibrary的publication,from components.java这句表明是一个java库,也就是最终会以jar包的形式发布。还定义了一个本地maven仓库,表明myLibrary的jar包最终会被发布到本地maven仓库。components定义了发布的组件,支持三个值:components.java(由JavaPlugin添加)、components.web(由WarPlugin添加)、components.javaPlatform(由JavaPlatformPlugin添加)。如果我们需要将一个web项目打包成war包发布,则使用components.web。我们当前的例子为jar,则使用components.java。
Gradle使用与Maven相同的逻辑来标识本地Maven缓存的位置。如果在settings.xml中定义了本地Maven仓库位置,那么Gradle将使用这个位置。USER_HOME/.m2下的settings.xml将会覆盖M2_HOME/conf中的settings.xml。如果没有可获取的settings.xml,Gradle将默认使用USER_HOME/.m2/repository作为本地Maven仓库位置。
3、maven-publish提供的tasks
maven-publish提供了如下tasks:
任务 | 描述 |
generatePomFileForPubNamePublication | 创建需要发布的名为PubName的POM文件,填充已知的元数据,如项目名称、项目版本和依赖项。POM文件的默认位置是build/publications/$pubName/pom-default.xml. |
publishPubNamePublicationToRepoNameRepository | 将PubName发布到名为RepoName的存储库。如果你有一个没有显式名称的存储库定义,RepoName将是“Maven”。 |
publishPubNamePublicationToMavenLocal | 将PubName发布复制到本地Maven缓存-通常是$USER_HOME/.m2/repository-以及发布的POM文件和其他元数据。 |
publish | 将所有定义的publication发布到所有定义的存储库的聚合任务。它不包括将publication复制到本地Maven库。 |
publishToMavenLocal | 将所有定义的publication复制到本地 Maven 库中,包括它们的元数据 (POM 文件等) |
4、执行任务
- 命令:gradle tasks
可以查看所有任务
- 命令:gradle publishToMavenLocal
执行publishToMavenLocal任务,或者在idea的gradle窗口点击任务名也可以
查看本地maven仓库,即可发找到发布的jar包
三、发布class.jar和sources.jar及javadoc.jar 三种jar包
新建打包sourcesJar任务 和 打包javadocJar任务,然后进行发布,
新增的 sourcesJar任务 和 javadocJar任务 可以在idea的gradle窗口中other任务列表中看到
完整代码如下:
// 声明插件
plugins {
id 'maven-publish'
}
// 项目group/artifact/version信息
group 'com.test.gradle'
// name 默认项目名
version '1.0-SNAPSHOT'
// 打包sourcesJar任务
task sourcesJar(type: Jar, dependsOn: classes) {
classifier = 'sources'
from sourceSets.main.allSource
}
// 打包javadocJar任务
task javadocJar(type: Jar, dependsOn: javadoc) {
classifier = 'javadoc'
from javadoc.destinationDir
}
// 解决javadoc打包乱码
javadoc {
options {
encoding "UTF-8"
charSet 'UTF-8'
author true
version true
title "文档大标题"
}
}
publishing {
// 发布
publications {
mavenJava(MavenPublication) {
//指定group/artifact/version信息
groupId project.group
artifactId project.name
version project.version
// components.java jar包
// components.web war包
from components.java
// 增加 sourcesJar、javadocJar 任务
artifact sourcesJar
artifact javadocJar
}
}
// 发布仓库
repositories {
// 本地仓库位于USER_HOME/.m2/repository
//
mavenLocal()
// 其他maven仓库
maven { url uri('/Users/h__d/Desktop/1') }
// aliyun镜像仓库
// maven {
// // 凭证
// credentials {
// username 'username' // 仓库发布用户名
// password 'password' // 仓库发布用户密码
// }
// // 地址
// url 'https://maven.aliyun.com/nexus/content/groups/public/'
// }
}
}
发布到配置仓库命令:gradle publish
发布到本地仓库命令:gradle publishToMavenLocal
进行发布
参考:
1、https://blog.csdn.net/u013632755/article/details/100111453
2、https://blog.csdn.net/dnc8371/article/details/106812825
3、https://blog.csdn.net/u011578734/article/details/114104495
转自:【Gradle】maven-publish插件的使用 - H__D - 博客园
标签:插件,仓库,jar,publish,maven,发布,components 来源: https://blog.csdn.net/chuyouyinghe/article/details/122416896
本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享; 2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关; 3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关; 4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除; 5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。