簡體   English   中英

Gradle:如何將Android庫發布到本地存儲庫

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM