![](/img/trans.png)
[英]Android Library - Publish Multiple Variants to Local Maven Repository using Gradle
[英]Gradle: How to publish a Android library to local repository
我有一個使用Gradle和Android Studio的庫和Android應用程序。 我可以將庫直接包含在項目中,如下所示
compile project(':library')
因為我不想與庫源代碼相結合,所以我想將庫發布到本地存儲庫中,以便我可以使用as
compile 'com.mygroup:library:1.0'
有什么建議嗎?
我剛剛找到了解決方案。 在庫項目的build.gradle中,添加它
apply plugin: 'maven'
group = 'com.mygroup'
version = '1.0'
uploadArchives {
repositories {
mavenDeployer {
repository(url: "file://[your local maven path here]")
// or repository(url: mavenLocal().getUrl())
}
}
}
在項目文件夾中,鍵入以下命令
gradle uploadArchives
閱讀發布工件以獲取更多信息
對於Android庫,您應該使用Android Gradle-Maven插件https://github.com/dcendents/android-maven-gradle-plugin :
buildscript {
repositories {
mavenCentral()
}
dependencies {
classpath 'com.github.dcendents:android-maven-gradle-plugin:1.3'
}
}
apply plugin: 'com.android.library'
apply plugin: 'com.github.dcendents.android-maven'
然后發布到本地存儲庫運行:
./gradlew install
它將安裝在$ HOME / .m2 / repository中。 在您的應用程序或其他項目中,您可以通過將mavenLocal()
添加到您的存儲庫來包含它。
或者,如果您的庫在GitHub上,那么您可以使用JitPack將其包含在其他項目中。 然后你不必運行上面的命令,只需使用被推送的內容即可。
在本地maven存儲庫上發布de庫,然后在gradle使用上發布
repositories {
mavenLocal()
}
如果列出了其他存儲庫,請確保首先顯示mavenLocal。
文件:關於https://gradle.org/docs/current/userguide/dependency_management.html的第51.6.4節
我更喜歡將java源代碼和javadoc添加到maven資源庫中。 以下腳本使用android maven插件將您的android庫發布到maven存儲庫。 它創建.aar,javadoc.jar,sources.jar和.pom,並在將文件上載到maven存儲庫后更新maven-metadata.xml。 我還把腳本放在GitHub上 。
apply plugin: 'com.android.library'
apply plugin: 'maven'
//Your android configuration
android {
//...
}
//maven repository info
group = 'com.example'
version = '1.0.0'
ext {
//Specify your maven repository url here
repositoryUrl = 'ftp://your.maven.repository.com/maven2'
//Or you can use 'file:\\\\C:\\Temp' or 'maven-temp' for a local maven repository
}
//Upload android library to maven with javadoc and android sources
configurations {
deployerJars
}
//If you want to deploy to an ftp server
dependencies {
deployerJars "org.apache.maven.wagon:wagon-ftp:2.2"
}
// custom tasks for creating source/javadoc jars
task javadoc(type: Javadoc) {
source = android.sourceSets.main.java.srcDirs
classpath += project.files(android.getBootClasspath().join(File.pathSeparator))
destinationDir = file("../javadoc/")
failOnError false
}
task javadocJar(type: Jar, dependsOn: javadoc) {
classifier = 'javadoc'
from javadoc.destinationDir
}
//Creating sources with comments
task androidSourcesJar(type: Jar) {
classifier = 'sources'
from android.sourceSets.main.java.srcDirs
}
//Put the androidSources and javadoc to the artifacts
artifacts {
archives androidSourcesJar
archives javadocJar
}
uploadArchives {
repositories {
mavenDeployer {
configuration = configurations.deployerJars
repository(url: repositoryUrl) {
//if your repository needs authentication
authentication(userName: "username", password: "password")
}
}
}
}
叫它
./gradlew uploadArchives
在settings.gradle
添加
include 'riz.com.mylibrary'
project(':riz.com.mylibrary').projectDir = new File('C:\\Users\\Rizwan Asif\\AndroidStudioProjects\\mylibrary')
然后在依賴項中的build.gradle
中添加
compile project(':riz.com.mylibrary')
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.