Gradle maven-publish 插件生成没有依赖项的 pom
Gradle maven-publish plugin produces pom with no dependencies
我有一个项目有一个 SharedCode
(Java) 模块,其次是一个 Android
(Android 库) 模块,它依赖于 SharedCode
模块。我之前一直在我的 build.gradle
文件中使用 maven
插件,并且我一直在使用该插件的 uploadArchives
任务来发布我的两个模块中的工件。这已经有效并生成了 pom 文件,这些文件反映了我的 build.gradle
文件中的依赖关系。
我想用新的 maven-publish
插件替换旧的 maven
插件。但是,我看到 maven-publish
插件生成的 pom 文件不包含依赖项。这是设计使然,这是插件中的错误还是我使用插件不正确?
我的SharedCode
模块中的build.gradle
文件如下:
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")
}
}
}
我的Android
模块中的build.gradle
文件如下:
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 文件中缺少依赖项。
在 java 项目的 publications
部分中使用 from components.java
代替 artifact...
行。那应该会自动在 pom 中生成依赖项。
android 项目未被识别为标准 java 项目,这使得它有点棘手。您可以使用 pom.withXml {}
创建自己的依赖项部分,然后遍历依赖项列表。或者,this gradle plugin 可以为您完成。
我有一个项目有一个 SharedCode
(Java) 模块,其次是一个 Android
(Android 库) 模块,它依赖于 SharedCode
模块。我之前一直在我的 build.gradle
文件中使用 maven
插件,并且我一直在使用该插件的 uploadArchives
任务来发布我的两个模块中的工件。这已经有效并生成了 pom 文件,这些文件反映了我的 build.gradle
文件中的依赖关系。
我想用新的 maven-publish
插件替换旧的 maven
插件。但是,我看到 maven-publish
插件生成的 pom 文件不包含依赖项。这是设计使然,这是插件中的错误还是我使用插件不正确?
我的SharedCode
模块中的build.gradle
文件如下:
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")
}
}
}
我的Android
模块中的build.gradle
文件如下:
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 文件中缺少依赖项。
在 java 项目的 publications
部分中使用 from components.java
代替 artifact...
行。那应该会自动在 pom 中生成依赖项。
android 项目未被识别为标准 java 项目,这使得它有点棘手。您可以使用 pom.withXml {}
创建自己的依赖项部分,然后遍历依赖项列表。或者,this gradle plugin 可以为您完成。