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

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章