Ответ 1
1. Издательство
В вашем проекте aar добавьте плагин maven-publish
и добавьте необходимую конфигурацию плагинов.
apply plugin: 'com.android.library'
apply plugin: 'maven-publish'
...
dependencies {
testCompile 'junit:junit:4.12'
compile 'com.android.support:appcompat-v7:23.1.1'
compile 'com.novoda:bintray-release:0.2.7'
}
...
publishing {
publications {
maven(MavenPublication) {
groupId 'com.example' //You can either define these here or get them from project conf elsewhere
artifactId 'example'
version '0.0.1-SNAPSHOT'
artifact "$buildDir/outputs/aar/app-release.aar" //aar artifact you want to publish
//generate pom nodes for dependencies
pom.withXml {
def dependenciesNode = asNode().appendNode('dependencies')
configurations.compile.allDependencies.each { dependency ->
def dependencyNode = dependenciesNode.appendNode('dependency')
dependencyNode.appendNode('groupId', dependency.group)
dependencyNode.appendNode('artifactId', dependency.name)
dependencyNode.appendNode('version', dependency.version)
}
}
}
}
//publish to filesystem repo
repositories{
maven {
url "$buildDir/repo"
}
}
}
Несколько заметок:
-
Мы используем настраиваемую публикацию maven, поэтому вам нужно определить, что публикуется с помощью предложения
artifact
-
Мы должны сгенерировать сам pom, в приведенном выше коде я использую все зависимости для конфигурации компиляции, вы можете убедиться, что все необходимые вам конфиги покрываются.
Запуск gradle publish
будет публиковаться в структуру maven repo в папку repo
, которую вы затем можете использовать из другого проекта.
2. Использование опубликованного .aar
В другом проекте для Android, чтобы использовать aar, опубликованный в # 1: На верхнем уровне build.gradle:
allprojects {
repositories {
jcenter()
maven {
url "D:/full/path/to/repo"
}
}
}
добавить путь к более раннему репо в качестве репозитория maven. Обратите внимание, что вам, возможно, придется использовать полный путь, потому что $buildDir
имеет другое значение для этого проекта. В вашем приложении build.gradle:
dependencies {
...
other dependencies
...
compile ('com.example:example:[email protected]'){transitive=true}
}
transitive=true
требуется для извлечения транзитивных зависимостей из файла pom.