Gradle 理解:Artifact
文章目录
- 一、概念
- 二、使用
- 2.1 使用 archives
- 2.2 使用自定义 Configuration
- 2.3 使用 maven 插件
- 2.4 使用 maven-publish 插件
一、概念
Artifact
翻译为:构件、工件。
代表的是一个领域对象,它包含了一个要被发布的文件,和它怎样被发布的信息。(如一个 jar 文件和它的 pom 文件。)
PublishArtifact
是通过一个 project 生产的一个 artifact
ConfigurablePublishArtifact
是一个可配置的 PublishArtifact
artifact {}
用于配置一个 ArtifactHandler
artifact {} 中内容
artifact {} 中的每条配置都会生成一个 ConfigurablePublishArtifact
(dependencies {} 的每条会生成一个 Dependency,根据不同的类型,有不同的子类)
二、使用
2.1 使用 archives
Gralde 的 base plugin 会给 project 中的每个 configuration 都生成一个 build「ConfigurationName」 task 和一个 upload「ConfigurationName」task。
执行 build、upload 会 build、upload 该 configuration 拥有的 artifacts。
如 java plugin 中有一个 archives 的 configuration,base plugin 会根据它生成 uploadArchives。
所以一般来说,可以用 archives 来声明一个 artifact
task gdJar(type: Jar) {doLast {println "gdJar exec"}
}artifacts {// 将 gdJar 看做 artifact,交给 archives 管理archives gdJar
}// Gradle 自动生成的 task
uploadArchives {repositories {// 上传到本地 maven 仓库maven {// 会在 build.gradle 同目录生成文件夹url "file:myRepoMaven"}}
}
执行 uploadArchives task 后,就会将 gdJar 生成的 jar 文件,上传到对应仓库目录下。
2.2 使用自定义 Configuration
task gdJar(type: Jar) {doLast {println "gdJar exec"}
}artifacts {// 将 gdJar 看作 artifact,交给 gdArchives 管理gdArchives gdJar
}uploadGdArchives {repositories {// 上传到本地 maven 仓库maven {// 会在 build.gradle 同目录生成文件夹url "file:myRepoMaven"}}
}
执行 uploadGdArchives task 后,就会将 gdJar 生成的 jar 文件,上传到对应仓库目录下。
2.3 使用 maven 插件
maven 插件提供了 mavenDeployer 的配置块,仍以 gdArchives 这个 configuration 为例:
apply plugin: 'maven'uploadGdArchives {repositories {// 上传到本地 maven 仓库// maven 插件提供的 mavenDeployermavenDeployer {// 会在项目根目录生成文件夹def url = 'file:myRepoMaven'repository(url: url)}}
}
执行 uploadGdArchives task 后,就会将 gdJar 生成的 jar 文件,上传到对应仓库目录下。
2.4 使用 maven-publish 插件
maven 插件是较原始的 artifact 发布方式,maven-publish 插件是更新的,也是 Gradle 更提倡的 artifact 发布方式。
maven-publish 定义了发布的 what、where、how。
publishing {// 定义要发布的东西,whatpublications {myLibrary(MavenPublication) {from components.java}}// 定义要发布的地点,whererepositories {maven {name 'myRepo'url "file:myRepoMaven"}}// how// publications 和 repositories 会组成相应的 task// publish「PubName」PublicationTo「RepoName」Repository:// publish「MyLibrary」PublicationTo「MyRepo」Repository
}
执行 publishMyLibraryPublicationToMyRepoRepository task 后,就会将 gdJar 生成的 jar 文件,上传到对应仓库目录下。
本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场,不承担相关法律责任。如若转载,请注明出处。 如若内容造成侵权/违法违规/事实不符,请点击【内容举报】进行投诉反馈!
