使用gradle構建發佈腳本,即可快速方便地發佈文件到maven倉庫。有2種插件可以選擇,一種maven,一種maven-publish。
使用maven插件
maven插件內置了一個方法uploadArchives,這個方法會將當前項目編譯打包併發布:
apply plugin: 'maven'
uploadArchives {
repositories {
mavenDeployer {
// repository(url: "http://repo.apcos.com/repository/apcos-snapshot/") {
// authentication(userName: "xxxx", password: "xxxx")
// }
repository(url: "file://localhost/F:/Studying/repo/")
pom.project {
groupId = "com.xter.support"
artifactId = "support"
version = "0.7"
packaging 'aar'
developers {
developer {
id 'xter'
name 'Liang'
timezone 'Asia/Shanghai'
}
}
description 'Some Utils of XTER'
}
}
}
}
按照官方文檔描述:
To add additional content to the POM, the pom.project builder can be used. With this builder, any
element listed in the Maven POM reference can be added.
pom.project節點中可以添加任何符合Maven POM規範的字段。
如果想將文檔註釋與源碼一起發佈的話,可以同級添加artifacts 節點說明需要發佈的文檔:
task javadoc(type: Javadoc) {
failOnError = false
source = android.sourceSets.main.java.srcDirs
classpath += project.files(android.getBootClasspath().join(File.pathSeparator))
options.addStringOption('encoding','UTF-8')
}
task javadocJar(type: Jar, dependsOn: javadoc) {
classifier = 'javadoc'
from javadoc.destinationDir
}
task sourceJar(type: Jar) {
classifier = 'sources'
from android.sourceSets.main.java.srcDirs
}
artifacts {
archives sourceJar
archives javadocJar
}
上述gradle任務可在IDE中gradle工具欄中找到:
雙擊執行後,即可在相應位置找到發佈的文件了。
這裏是發佈到F盤目錄下了,所以去F盤對應目錄下即可找到:
在support-0.7.pom中即可看到一些發佈的具體描述信息:
<?xml version="1.0" encoding="UTF-8"?>
<project xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd" xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<modelVersion>4.0.0</modelVersion>
<groupId>com.xter.support</groupId>
<artifactId>support</artifactId>
<version>0.7</version>
<packaging>aar</packaging>
<description>Some Utils of XTER</description>
<developers>
<developer>
<id>xter</id>
<name>Liang</name>
<timezone>Asia/Shanghai</timezone>
</developer>
</developers>
<dependencies>
<dependency>
<groupId>com.android.support</groupId>
<artifactId>appcompat-v7</artifactId>
<version>26.1.0</version>
<scope>compile</scope>
</dependency>
<dependency>
<groupId>com.android.support</groupId>
<artifactId>design</artifactId>
<version>26.1.0</version>
<scope>compile</scope>
</dependency>
</dependencies>
</project>
使用maven-publish插件
maven-publish插件同樣內置一個方法,名爲publishing,通過配置此方法,可以發佈文件:
apply plugin: 'maven-publish'
publishing {
publications {
support(MavenPublication) {
artifact sourceJar
artifact javadocJar
artifact 'build/outputs/aar/support-release.aar'
groupId 'com.xter.support'
artifactId 'support'
version '0.7'
pom.withXml {
asNode().appendNode('description', 'Some Utils of XTER')
def developer = asNode().appendNode('developers').appendNode('developer')
developer.appendNode('id','xter')
developer.appendNode('name','Liang')
developer.appendNode('timezone','Asia/Shanghai')
}
}
}
repositories {
maven {
// credentials {
// username "xxxxx"
// password "xxxxx"
// }
// url "http://repo.apcos.com/repository/apcos-snapshot/"
url "file://F:/Studying/repo/"
}
}
}
這裏是上傳了本地aar文件及其文檔,效果和上一種方法等同。只不過由於這裏用的gradle版本較低,只能使用pom.withXml來添加pom更多信息,還是有所不便,根據官方例子是同樣可以依閉包形式快速添加節點的。
此時官方gradle最新版本爲6.0.1。
完成後同樣是執行對應gradle任務即可完成發佈。(這裏截的另外的項目圖,正確的gradle任務應該叫publishSupportPublicationToMavenRepository)
遠程依賴
最後遠程依賴不必多說,先在根節點的build.gradle中添加對應倉庫:
allprojects {
repositories {
// maven { url 'http://repo.apcos.com/repository/apcos-snapshot/'}
maven { url 'file://F:/Studying/repo/'}
}
}
然後在需要的module引用:
dependencies {
implementation 'com.xter.support:support:0.7'
}
至此就可以正常使用了。