maven - Gradle build.gradle 到 Maven pom.xml

标签 maven gradle pom.xml

我有一个 Gradle 项目,我需要将其所有依赖项转移并与另一个 Maven 项目一起使用。换句话说,我如何从 build.gradle 生成(或者可以生成)pom.xml?

最佳答案

自 Gradle 7 起,当使用 Gradle's Maven-Publish plugin 时、publishToMavenLocalpublish 会自动添加到您的任务中,并且调用其中任何一个都将始终生成 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/

相关文章:

java - Spring集成测试: Can not find bean for class in dependent module

java - SauceLabs Java 原型(prototype)中的奇怪版本号

file - Maven:包含在父 POM 中定义的文件?

gradle - gradle:仅在文件时间戳早于最新源代码时间戳时才运行任务

java - 如何运行Akka Grpc Java示例

java - 我如何解决关于 Maven 的构建错误?

maven - 如何使用 Selenium 2.0 和 Maven 运行 HTML Selenese 测试?

java - 无法编译 java doclet 程序,获取包 com.sun.javadoc 不存在

java - javax.servlet-api 3.1 实现的 Maven 依赖项是什么?

java - 缺少与所有者的运行时依赖关系,gradle for android