У меня есть проект, который имеет модуль SharedCode
(Java), а во-вторых, модуль Android
(Android), который зависит от модуля SharedCode
. Я ранее использовал плагин maven
в своих build.gradle
файлах, и я использовал задачу uploadArchives
этого плагина для публикации артефактов из моих двух модулей. Это сработало и выпустило файлы pom, которые отражают зависимости в моих build.gradle
файлах.Gradle maven-publish plugin производит pom без зависимостей
Я думал, что заменить старый maven
плагин с новым maven-publish
плагина, но причудливо я вижу, что П-файлы, созданные с помощью maven-publish
плагина не содержат зависимостей ?! Это по дизайну или это ошибка в плагине, или я, возможно, неправильно использую плагин?
Файл build.gradle
в моем SharedCode
модуля выглядит следующим образом:
apply plugin: 'java'
apply plugin: 'maven-publish'
group = "${projectGroupId}"
version = "${projectVersionName}"
dependencies {
compile 'com.google.guava:guava:18.0'
}
publishing {
publications {
SharedCode(MavenPublication) {
groupId "${projectGroupId}"
artifactId 'SharedCode'
version "${projectVersionName}"
artifact("$buildDir/libs/SharedCode-${projectVersionName}.jar")
}
}
}
Файл build.gradle
в моем Android
модуля выглядит следующим образом:
apply plugin: 'com.android.library'
apply plugin: 'maven-publish'
group = "${projectGroupId}"
version = "${projectVersionName}"
android {
// android stuff here...
}
dependencies {
compile project(':SharedCode')
}
publishing {
publications {
Android(MavenPublication) {
groupId "${projectGroupId}"
artifactId 'Android'
version "${projectVersionName}"
artifact "$buildDir/outputs/aar/Android-release.aar"
}
}
}
Файл ПОМ создан из SharedCode
модуля в следует:
<?xml version="1.0" encoding="UTF-8"?>
<project xsi:schemaLocation="http://maven.apache.org/POM/4.0.0
http://maven.apache.org/xsd/maven-4.0.0.xsd"
xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<modelVersion>4.0.0</modelVersion>
<groupId>com.mycompany.sdk</groupId>
<artifactId>SharedCode</artifactId>
<version>0.0.2</version>
</project>
Файл П создан из Android
модуля выглядит следующим образом:
<?xml version="1.0" encoding="UTF-8"?>
<project xsi:schemaLocation="http://maven.apache.org/POM/4.0.0
http://maven.apache.org/xsd/maven-4.0.0.xsd"
xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<modelVersion>4.0.0</modelVersion>
<groupId>com.mycompany.sdk</groupId>
<artifactId>Android</artifactId>
<version>0.0.2</version>
<packaging>aar</packaging>
</project>
Обратите внимание на отсутствие зависимостей в П файлах.
Удивительный! Замена строки 'artifact ...' для 'from components.java' в модуле' SharedCode' устраняет проблему для модуля 'SharedCode'. Просто нужно найти решение для модуля 'Android'. Будут следить за вашими выводами, чтобы узнать, приведет ли это к решению. Вернусь к вам. –
У меня была такая же проблема и описал решение в этом блоге: http://jeroenmols.com/blog/2015/08/13/artifactory2/ (см. Раздел зависимостей) –
Удалось решить проблему с зависимостями Android, добавив 'pom .withXml {} 'в мой' build.gradle'. Этот ответ был большой помощью: http://stackoverflow.com/a/24764713/1071320 –