Gradle: Как опубликовать библиотеку Android в локальном репозитории
У меня есть библиотека и приложение для Android с помощью Gradle и Android Studio. Я могу включить библиотеку непосредственно в проект, следуя
compile project(':library')
Поскольку я не хочу связываться с исходным кодом библиотеки, я хочу опубликовать библиотеку в локальном репозитории, чтобы я мог использовать ее как
compile 'com.mygroup:library:1.0'
Любые советы?
Ответы
Ответ 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')