Подтвердить что ты не робот

Gradle: Как опубликовать библиотеку Android в локальном репозитории

У меня есть библиотека и приложение для Android с помощью Gradle и Android Studio. Я могу включить библиотеку непосредственно в проект, следуя

compile project(':library')

Поскольку я не хочу связываться с исходным кодом библиотеки, я хочу опубликовать библиотеку в локальном репозитории, чтобы я мог использовать ее как

compile 'com.mygroup:library:1.0'

Любые советы?

4b9b3361

Ответ 1

Я нашел решение. В build.gradle проекта библиотеки добавьте этот

apply plugin: 'maven'

group = 'com.mygroup'
version = '1.0'

uploadArchives {
    repositories {
        mavenDeployer {
            repository(url: "file://[your local maven path here]")
        }
    }
}

В папке проекта введите следующую команду

gradle uploadArchives

Прочтите публикацию артефактов для получения дополнительной информации

Ответ 2

Для 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. Тогда вам не нужно запускать указанную выше команду и просто использовать то, что было нажато.

Ответ 3

Опубликуйте библиотеку в своем локальном репозитории maven, а затем на gradle используйте

repositories {
  mavenLocal()
}

Если у вас есть другие репозитории, убедитесь, что сначала отображается mavenLocal.

Документы: раздел 51.6.4 на https://gradle.org/docs/current/userguide/dependency_management.html

Ответ 4

Я предпочитаю добавлять источники java и javadoc в репозиторий maven. Следующий script публикует вашу библиотеку android для репозитория maven с помощью плагина android maven. Он создает .aar, javadoc.jar, sources.jar и .pom и обновляет maven-metadata.xml после загрузки файлов в репозиторий maven. Я также положил script на 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

Ответ 5

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