Gradle:如何将Android库发布到本地存储库

Gradle:如何将Android库发布到本地存储库,android,android-gradle-plugin,Android,Android Gradle Plugin,我有一个库和一个使用Gradle和Android Studio的Android应用程序。我可以将库直接包含在项目中,如下所示 compile project(':library') 因为我不想与库源代码混淆,所以我想将库发布到本地存储库中,以便作为 compile 'com.mygroup:library:1.0' 有什么建议吗?在本地maven存储库上发布de库,然后在gradle上使用 repositories { mavenLocal() } 如果列出了其他存储库,请确保首先显示

我有一个库和一个使用Gradle和Android Studio的Android应用程序。我可以将库直接包含在项目中,如下所示

compile project(':library')
因为我不想与库源代码混淆,所以我想将库发布到本地存储库中,以便作为

compile 'com.mygroup:library:1.0'

有什么建议吗?

在本地maven存储库上发布de库,然后在gradle上使用

repositories {
  mavenLocal()
}
如果列出了其他存储库,请确保首先显示mavenLocal


文档:关于

的第51.6.4节我刚刚找到了一个解决方案。在库项目的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

有关详细信息,请阅读
settings.gradle
add中的

include 'riz.com.mylibrary'
project(':riz.com.mylibrary').projectDir = new File('C:\\Users\\Rizwan Asif\\AndroidStudioProjects\\mylibrary')
然后在依赖项的
build.gradle
中添加

compile project(':riz.com.mylibrary')

对于Android库,您应该使用Android Gradle Maven插件:

然后,要发布到本地存储库,请运行:

./gradlew install
它将安装在$HOME/.m2/存储库中。然后,在应用程序或其他项目中,您可以通过将
mavenLocal()
添加到存储库中来包含它


或者,如果您的库位于GitHub上,则可以使用将其包含在其他项目中。然后,您不必运行上述命令,只需使用推送的内容即可

我更喜欢将java源代码和javadoc添加到maven存储库中。下面的脚本使用将您的android库发布到maven存储库。它创建.aar、javadoc.jar、sources.jar和.pom,并在将文件上载到maven存储库后更新maven-metadata.xml。我还把脚本放在了屏幕上

称之为

./gradlew uploadArchives

我想在库中还需要
group='com.example'version='1.0'
。如果您同时开发库,这是最好的方法,但是当我尝试对同步进行分级时,我得到了一个名为'default'的错误
配置。
[您的本地maven路径在此]
类似于
~/.m2
文件夹?存储库(url:mavenLocal().getUrl())
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