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

时间:2015-02-06 08:23:04

标签: android android-gradle

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

compile project(':library')

因为我不想与库源代码进行交互,所以我想将库发布到本地存储库中,以便我可以用作

compile 'com.mygroup:library:1.0'

有任何建议吗?

5 个答案:

答案 0 :(得分:48)

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

阅读Publishing artifacts了解更多信息

答案 1 :(得分:26)

对于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将其包含在其他项目中即可。然后你不必运行上面的命令,只能使用被推的东西。

答案 2 :(得分:5)

在您当地的maven存储库上发布de library,然后在您的gradle上使用

repositories {
  mavenLocal()
}

如果您列出了其他存储库,请确保首先显示您的mavenLocal。

文件:关于https://gradle.org/docs/current/userguide/dependency_management.html

的第51.6.4节

答案 3 :(得分:5)

我更喜欢将java源代码和javadoc添加到maven资源库。以下脚本使用android maven plugin将您的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

答案 4 :(得分:0)

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')