Gradle项目发布到仓库,类Maven的install与deploy操作

我们以发布到Maven仓库为例,我们需要用到Maven Publish Plugin插件。

接下来的例子,我们定义一个Java库,并最终打包成jar并发布到本地Maven仓库中。

首先需要在build.gradle文件中新增MavenPublish插件:

plugins {
    id 'java-library'
    id 'maven-publish'
}

我们应用了maven-publish插件后,就可以在build.gradle文件中配置publications和仓库了,如下使用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仓库位置。

MavenPublishPlugin提供了如下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 文件等)

我们在项目中执行./graldew tasks会看到Publishing tasks任务组,如下:

Publishing tasks
----------------

generateMetadataFileForMyLibraryPublication - Generates the Gradle metadata file for publication ’MyLibrary‘.
generatePomFileForMyLibraryPublication - Generates the Maven POM file for publication ’MyLibrary‘.
publish - Publishes all publications produced by this project.
publishMyLibraryPublicationToMavenLocal - Publishes Maven publication ’MyLibrary‘. to the local Maven repository.
publishToMavenLocal - Publishes all Maven publications produced by this project to the local Maven cache.

我们执行./graldew publishMyLibraryPublicationToMavenLocal命令,gralde就会自动构建打包并发布到你的本地maven仓库中,如果你配置了setting.xml并指定了maven仓库位置的话,那么发布就是该地址,如果没有指定maven仓库地址,则默认是USER_HOME/.m2/repository

你可能感兴趣的:(gradle)