我有一個項目,其中有一個SharedCode
(Java)模塊,其次是Android
(Android庫)模塊,該模塊依賴於SharedCode
模塊。我以前一直在使用我的build.gradle
文件中的maven
插件,並且我一直在使用該插件的uploadArchives
任務來發布我的兩個模塊中的工件。這已經工作並生成了反映我的build.gradle
文件中的依賴關係的pom文件。Gradle maven-publish插件生成沒有依賴項的pom
我想我會用新maven-publish
插件替換舊maven
插件,但奇怪的是我看到的是由maven-publish
插件生成的POM文件不包含任何依賴關係?這是由設計還是這是一個插件中的錯誤,或者我可能使用不正確的插件?
的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
模塊是爲POM文件如下:
<?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
模塊創建的POM文件如下:
<?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>
注意沒有在POM文件的依賴關係。
太棒了!在'SharedCode'模塊中將'from component.java'的'artifact ...'行替換爲'SharedCode'模塊的問題。只需要爲Android模塊找到解決方案。將跟隨你的線索,看看是否導致解決方案。會回到你身邊。 –
我有完全相同的問題,並在此博客文章中描述解決方案:http://jeroenmols.com/blog/2015/08/13/artifactory2/(請參閱依賴項部分) –
通過添加'pom管理解決Android依賴性問題.withXml {}'到我的'build.gradle'。這個答案是一個很大的幫助:http://stackoverflow.com/a/24764713/1071320 –