Gradle 1.12使用者指南翻譯——第五十二章. Maven 外掛
http://blog.csdn.net/column/details/gradle-translation.html
翻譯專案請關注Github上的地址:
https://github.com/msdx/gradledoc
本文翻譯所在分支:
https://github.com/msdx/gradledoc/tree/1.12。
直接瀏覽雙語版的文件請訪問:
http://gradledoc.qiniudn.com/1.12/userguide/userguide.html。
另外,Android 手機使用者可通過我寫的一個程式瀏覽文件,帶快取功能的,目前0.5版本相容 Android 2.3以上系統,專案地址如下:
https://github.com/msdx/gradle-doc-apk
翻譯不易,轉載請註明本文在CSDN部落格上的出處:
http://blog.csdn.net/maosidiaoxian/article/details/53749725
關於我對Gradle的翻譯,以Github上的專案及http://gradledoc.qiniudn.com 上的文件為準。如發現翻譯有誤的地方,將首先在以上兩個地方更新。因時間精力問題,部落格中發表的譯文基本不會同步修改。
另外,目前Gradle1.12版本的文件我電腦上已經翻譯到第六十三章,所以該版本的翻譯也進入校稿階段,校稿的方式可以為到該專案https://github.com/msdx/gradledoc 提交issue或者是pull request。
第五十二章. Maven 外掛
此章節還在完善中。
Maven 外掛添加了將專案部署到 Maven 倉庫的支援。
52.1. 用法
要使用 Maven 外掛,請在構建指令碼中包含以下語句:
示例 52.1. 使用 Maven 外掛
build.gradle
apply plugin: 'maven'
52.2. 任務
Maven 外掛定義了以下任務:
表 52.1. Maven 外掛 - 任務
任務名稱 | 依賴於 | 型別 | 描述 |
install | 所有構建相關archives的任務。 | 將相關的構件安裝到本地的 Maven 快取,包括 Maven 元資料的生成。預設情況下 install 任務是與archives |
52.3. 依賴管理
Maven 外掛不定義任何依賴配置。
52.4. 約定屬性
Maven 外掛定義了下列約定屬性:
表 52.2. Maven 外掛 - 屬性
屬性名稱 | 型別 | 預設值 | 描述 |
pomDirName | String | poms | 相對於構建目錄,用於寫入生成的POM的資料夾路徑。 |
pomDir | File (read-only) |
| 生成的POM所寫入的目錄。 |
52.5. 約定方法
Maven 外掛提供了用於建立 POM 的工廠方法,如果你需要一個 POM 檔案但是沒有上傳到 Maven 倉庫的場景,這個工廠方法將非常有用。
示例 52.2. 建立一個單獨的 pom。
build.gradle
task writeNewPom << { pom { project inceptionYear '2008' licenses { license { name 'The Apache Software License, Version 2.0' url 'http://www.apache.org/licenses/LICENSE-2.0.txt' distribution 'repo' } } } }.writeTo("$buildDir/newpom.xml") }
除其他事項外,Gradle支援和polyglot Maven同樣的生成器語法。如果要了解關於 Gradle Maven POM 物件的更多資訊,請參閱MavenPom
。請參見: MavenPluginConvention
52.6. 與 Maven 倉庫的互動
52.6.1. 介紹
通過 Gradle你可以部署到遠端 Maven 倉庫,或者是安裝到你的本地 Maven 倉庫。這包括所有的 Maven 元資料操縱,並且 Maven snapshot一樣可用。事實上,Gradle 的部署是 100%相容 Maven的,因為我們在hood下使用的是本地的 Maven Ant 任務。
如果你沒有一個POM檔案,部署到 Maven 倉庫只有一半的樂趣。幸運的是 Gradle 可以使用它的依賴資訊為你生成這個 POM。
52.6.2. 部署到 Maven 倉庫
讓我們假設你的專案只是產生預設的 jar 檔案。現在你想要將這個 jar 檔案部署到遠端 Maven 倉庫。
示例 52.3. 上傳檔案到遠端 Maven 倉庫
build.gradle
apply plugin: 'maven' uploadArchives { repositories { mavenDeployer { repository(url: "file://localhost/tmp/myRepo/") } } }
就這些了。呼叫uploadArchives
任務將生成 POM,並將部署構件和 POM 到指定的倉庫。
如果你需要支援檔案
之外的其他協議,那麼你還需要再做一些事情。在這種情況下,我們必須將委派本地的Maven程式碼給第三方庫實現。具體是哪些庫,將取決於你需要的協議。表 52.3. “Maven 部署的協議jar”列出了可用的協議以及相應的庫(這些庫又有具有傳遞依賴,而這些依賴也有其自己的傳遞依賴)。[19] 舉個例子,要使用ssh協議,你可以:
示例 52.4. 通過 SSH 上傳檔案
build.gradle
configurations { deployerJars } repositories { mavenCentral() } dependencies { deployerJars "org.apache.maven.wagon:wagon-ssh:2.2" } uploadArchives { repositories.mavenDeployer { configuration = configurations.deployerJars repository(url: "scp://repos.mycompany.com/releases") { authentication(userName: "me", password: "myPassword") } } }
Maven deployer有很多配置選項。這個配置通過一個 Groovy builder 來完成。這個配置樹的所有元素都是 Java beans。你可以傳一個map到bean元素中,來配置簡單的屬性。如果要新增另一個bean元素到它的parent,你可以使用一個閉包。在上例中repository和authentication都是這樣的 bean 元素。表 52.4,"MavenDeployer 的配置元素"列出了可用的 bean 元素,以及 javadoc 中相應類的連結。在javadoc 中你可以看到可能的屬性,這些屬性你可以設定為特定的元素。
在 Maven 中你可以定義倉庫和snapshot倉庫。如果沒有定義任何snapshot 倉庫,release和snapshot都將部署到repository
元素中。否則,snapshots將部署到snapshotRepository
元素中。
表 52.3. Maven 部署的協議 jars
協議 | Library |
http | org.apache.maven.wagon:wagon-http:2.2 |
ssh | org.apache.maven.wagon:wagon-ssh:2.2 |
ssh-external | org.apache.maven.wagon:wagon-ssh-external:2.2 |
ftp | org.apache.maven.wagon:wagon-ftp:2.2 |
webdav | org.apache.maven.wagon:wagon-webdav:1.0-beta-2 |
file | - |
52.6.3. 安裝到本地倉庫
Maven 外掛將install
任務新增到你的專案。這個任務依賴於archives
配置的所有archives任務。它將這些archives安裝到你的本地 Maven 倉庫中。本地倉庫的預設位置是否在 Maven settings.xml
中被重新定義,這項任務也會考慮到。
52.6.4. Maven POM 生成
當部署一個artifact 到一個 Maven 庫時,Gradle 會自動為它生成一個POM。下表展示了用於POM的groupId
,artifactId
,version
和packaging
元素的預設值。這些dependency
元素由project 的依賴宣告所建立。
表 52.5. Maven POM 生成的預設值
Maven 元素 | 預設值 |
groupId | project.group |
artifactId | uploadTask.repositories.mavenDeployer.pom.artifactId(如果有設定的話)或archiveTask.baseName. |
version | project.version |
packaging | archiveTask.extension |
在這裡, uploadTask
和archiveTask
分別指向上傳和分別生成archive的任務(例如uploadArchives
和jar
)。archiveTask.baseName
預設為project.archivesBaseName
,後者預設為project.name
。
當你將archiveTask.baseName
設定為非預設值時,請確保將uploadTask.repositories.mavenDeployer.pom.artifactId
設定為相同的值。否則,在相同的構建中,這個專案可能會被其他專案所生成的POMs 中錯誤的 artifact ID所引用到。
生成的 POMs 可以在<buildDir>/poms
看到。它們可以通過MavenPom
API 進一步定製化。例如,你可能希望部署到 Maven 倉庫中的artifact 有不同的版本,或者是不同於 Gradle 生成的artifact 的名稱。如果要自定義這些你可以這樣做:
示例 52.5. pom定製
build.gradle
uploadArchives { repositories { mavenDeployer { repository(url: "file://localhost/tmp/myRepo/") pom.version = '1.0Maven' pom.artifactId = 'myMavenName' } } }
如果要向 POM 新增其他的內容,可以使用pom.project
生成器。通過這個生成器,Maven POM 參考中列出的任何元素都可以被新增進來。
示例 52.6. pom 的生成器型別自定義
build.gradle
uploadArchives { repositories { mavenDeployer { repository(url: "file://localhost/tmp/myRepo/") pom.project { licenses { license { name 'The Apache Software License, Version 2.0' url 'http://www.apache.org/licenses/LICENSE-2.0.txt' distribution 'repo' } } } } } }
注:groupId
,artifactId
,version
和packaging
應該始終直接在pom
物件上設定。
示例 52.7. 修改自動生成的內容
build.gradle
[installer, deployer]*.pom*.whenConfigured {pom -> pom.dependencies.find {dep -> dep.groupId == 'group3' && dep.artifactId == 'runtime' }.optional = true }
如果你有超過一個的artifact 要釋出,那麼要做的事情就會有些不同。請參閱第 52.6.4.1 節,“一個專案多個構件”。
要為 Maven installer(見第 52.6.3 條,“安裝到本地資源庫”) 自定義設定,你可以:
示例 52.8. Maven installer 的自定義
build.gradle
install { repositories.mavenInstaller { pom.version = '1.0Maven' pom.artifactId = 'myName' } }
相關推薦
Gradle 1.12使用者指南翻譯——第五十二章. Maven 外掛
本文由CSDN部落格貌似掉線翻譯,其他章節的翻譯請參見:http://blog.csdn.net/column/details/gradle-translation.html翻譯專案請關注Github上的地址:https://github.com/msdx/gradledoc
Gradle 1.12使用者指南翻譯——第三十七章. OSGi 外掛
本文由CSDN部落格萬一博主翻譯,其他章節的翻譯請參見: http://blog.csdn.net/column/details/gradle-translation.html 翻譯專案請關注Github上的地址: https://github.com/msdx
Gradle 1.12使用者指南翻譯——第三十一章. FindBugs 外掛
其他章節的翻譯請參見: http://blog.csdn.net/column/details/gradle-translation.html 翻譯專案請關注Github上的地址: https://github.com/msdx/gradledoc/tree/1.
Gradle 1.12使用者指南翻譯——第四十七章. Build Init 外掛
本文由CSDN部落格貌似掉線翻譯,其他章節的翻譯請參見:http://blog.csdn.net/column/details/gradle-translation.html翻譯專案請關注Github上的地址:https://github.com/msdx/gradledoc
Gradle 1.12使用者指南翻譯——第四十五章. 應用程式外掛
本文由CSDN部落格貌似掉線翻譯,其他章節的翻譯請參見:http://blog.csdn.net/column/details/gradle-translation.html翻譯專案請關注Github上的地址:https://github.com/msdx/gradledoc
Gradle 1.12使用者指南翻譯——第三十章. CodeNarc 外掛
其他章節的翻譯請參見: http://blog.csdn.net/column/details/gradle-translation.html 翻譯專案請關注Github上的地址: https://github.com/msdx/gradledoc/tree/1.
Gradle 1.12使用者指南翻譯——第二十九章. Checkstyle 外掛
其他章節的翻譯請參見: http://blog.csdn.net/column/details/gradle-translation.html 翻譯專案請關注Github上的地址: https://github.com/msdx/gradledoc/tree/1.
“全棧2019”Java第五十二章:繼承與初始化詳解
難度 初級 學習時間 10分鐘 適合人群 零基礎 開發語言 Java 開發環境 JDK v11 IntelliJ IDEA v2018.3 文章原文連結 “全棧2019”Java第五十二章:繼承與初始化詳解 下一章 “全棧2019”Java第五十三章:向上轉型和向下轉型
第五十二章:FastDFS分散式檔案系統
資料下載 大綱 FastDFS架構包括Tracker server 和 Storage server 。客戶端請求Tracker server 進行檔案上傳、下載,通過Ttacker server 排程,最總
Docker 1.12 Swarm叢集實戰(第五章)
補充一些遺漏的問題. 本章主要內容: 使用 constraints 指定 service 約束.service 掛載使用本地volume.ELK日誌平臺使用GELF日誌驅動收集日誌. 1. 指定service約束 在前幾章中, 我們建立的 registry 服務,是由
python學習第五十二天logging模塊的使用
logging模塊 this 需求 gin info 等於 net 正常的 可能 很多程序都有記錄日誌的需求,並且日誌包含的信息即有正常的程序訪問日誌,還可能有錯誤,警告等信息輸出,python的 logging模塊提供了標準的日誌接口,你可以通過它存儲各種格式的日誌
python學習第五十二天logging模組的使用
很多程式都有記錄日誌的需求,並且日誌包含的資訊即有正常的程式訪問日誌,還可能有錯誤,警告等資訊輸出,python的 logging模組提供了標準的日誌介面,你可以通過它儲存各種格式的日誌,logging的日誌可以分debug(),info() warning() error()
C++筆記 第五十二課 C++中的抽象類和介面---狄泰學院
如果在閱讀過程中發現有錯誤,望評論指正,希望大家一起學習,一起進步。 學習C++編譯環境:Linux 第五十二課 C++中的抽象類和介面 1.什麼是抽象類? 面向物件中的抽象概念 在進行面向物件分析時,會發現一些抽象的概念!圖形的面積如何計算? 在現實中需要知道具體的圖形型
“全棧2019”Java第五十四章:多型詳解
難度 初級 學習時間 10分鐘 適合人群 零基礎 開發語言 Java 開發環境 JDK v11 IntelliJ IDEA v2018.3 文章原文連結 “全棧2019”Java第五十四章:多型詳解 下一章 “全棧2019”Java第五十五章:方法的靜態繫結與動態繫結
“全棧2019”Java第五十七章:多型與構造方法詳解
難度 初級 學習時間 10分鐘 適合人群 零基礎 開發語言 Java 開發環境 JDK v11 IntelliJ IDEA v2018.3 文章原文連結 “全棧2019”Java第五十七章:多型與構造方法詳解 下一章 “全棧2019”Java第五十八章:多型中方法返回型
“全棧2019”Java第五十八章:多型中方法返回型別可以是子類型別
難度 初級 學習時間 10分鐘 適合人群 零基礎 開發語言 Java 開發環境 JDK v11 IntelliJ IDEA v2018.3 文章原文連結 “全棧2019”Java第五十八章:多型中方法返回型別可以是子類型別 下一章 “全棧2019”Java第五十九章:抽
“全棧2019”Java第五十九章:抽象類與抽象方法詳解
難度 初級 學習時間 10分鐘 適合人群 零基礎 開發語言 Java 開發環境 JDK v11 IntelliJ IDEA v2018.3 文章原文連結 “全棧2019”Java第五十九章:抽象類與抽象方法詳解 下一章 “全棧2019”Java第六十章:如何定義介面
第五十六章:Spring Cloud容器
Spring Cloud中文網 Spring Cloud 是什麼? Spring Cloud 是一系列框架的有序集合,將市面上開發得比較好的模組整合進去,進行封裝,從而減少了各模組的開發成本。 Spring Cloud 優缺點 基於註解,沒有配置檔案,解耦的 Spring Clo
第五十四章:Dubbo分散式服務框架
Dubbo官網 什麼是Dubbo? 它有什麼特點?它的優點是什麼? 為什麼要使用它?有什麼功能?Dubbo能做什麼? 什麼是Dubbo? 1.Dubbo是一個分散式服務框架。 說明:如果沒有分散式的需求,其實是不需要用的,只有在分散式的時候,才有dubbo這
孤荷凌寒自學python第五十二天初次嘗試使用python讀取Firebase資料庫中記錄
孤荷凌寒自學python第五十二天初次嘗試使用python讀取Firebase資料庫中記錄 (完整學習過程螢幕記錄視訊地址在文末) 今天繼續研究Firebase資料庫,利用google免費提供的這個資料庫服務,今天主要嘗試使用firebase_admin模組來連線fireb