Gradle 理解:Artifact

47 篇文章 0 订阅
14 篇文章 1 订阅

一、概念

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 插件提供的 mavenDeployer
        mavenDeployer {
            // 会在项目根目录生成文件夹
            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 {
    // 定义要发布的东西,what
    publications {
        myLibrary(MavenPublication) {
            from components.java
        }
    }

    // 定义要发布的地点,where
    repositories {
        maven {
            name 'myRepo'
            url "file:myRepoMaven"
        }
    }

    // how
    // publications 和 repositories 会组成相应的 task
    // publish「PubName」PublicationTo「RepoName」Repository:
    // publish「MyLibrary」PublicationTo「MyRepo」Repository
}

执行 publishMyLibraryPublicationToMyRepoRepository task 后,就会将 gdJar 生成的 jar 文件,上传到对应仓库目录下。

  • 2
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值