我有一个 Gradle 项目,我需要将其所有依赖项转移并与另一个 Maven 项目一起使用。换句话说,我如何从 build.gradle 生成(或者可以生成)pom.xml?
最佳答案
自 Gradle 7 起,当使用 Gradle's Maven-Publish plugin 时、publishToMavenLocal 和 publish 会自动添加到您的任务中,并且调用其中任何一个都将始终生成 POM 文件。
因此,如果您的 build.gradle 文件如下所示:
plugins {
id 'java'
id 'maven-publish'
}
repositories {
mavenCentral()
}
dependencies {
implementation group: 'org.slf4j', name: 'slf4j-api', version: '1.7.25'
runtimeOnly group: 'ch.qos.logback', name:'logback-classic', version:'1.2.3'
testImplementation group: 'junit', name: 'junit', version: '4.12'
}
// the GAV of the generated POM can be set here
publishing {
publications {
maven(MavenPublication) {
groupId = 'edu.bbte.gradleex.mavenplugin'
artifactId = 'gradleex-mavenplugin'
version = '1.0.0-SNAPSHOT'
from components.java
}
}
}
你可以在其文件夹中调用gradlepublishToLocalRepo
,你会在build/publications/maven子文件夹中找到一个名为pom-default.xml。此外,构建的 JAR 和 POM 将位于您的 Maven 本地存储库中。更准确地说,如果您想省略对 Maven 本地存储库的发布,则 gradlegeneratePomFileForMavenPublication
任务会执行实际生成。
请注意,并非所有依赖项都显示在此处,因为 Gradle“配置”并不总是与 Maven“范围”一对一映射。
关于maven - Gradle build.gradle 到 Maven pom.xml,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12888490/