使用 gradle 在 jar 中生成 pom.xml

Man*_*dan 8 java jar gradle pom.xml

我想用 IntelliJ/Gradle 生成一个带有pom.xml内部的 jar,以便在另一个项目中使用它。我尝试了以下代码build.gradle

group 'com.test'
version '1.0-SNAPSHOT'

apply plugin: 'java'
apply plugin: 'maven-publish'

sourceCompatibility = 1.5

repositories {
    mavenCentral()
}
jar {
    into("META-INF/maven/$project.group/$project.name") {
        from generatePomFileForMavenJavaPublication
        rename ".*", "pom.xml"
    }
}
publishing {
    publications {
        mavenJava(MavenPublication) {
            from components.java
        }
    }
}
dependencies {
    testCompile group: 'junit', name: 'junit', version: '4.11'
    compile group: 'postgresql', name: 'postgresql', version: '9.1-901.jdbc4'
}
Run Code Online (Sandbox Code Playgroud)

但我收到以下错误:

'jar' cannot be applied to '(groovy.lang.closure <org.gradle.api.tasks.bundling.AbstractArchiveTask> )'
Run Code Online (Sandbox Code Playgroud)

gradle 说:

Could not find property 'generatePomFileForMavenJavaPublication' on
task ':jar'.
Run Code Online (Sandbox Code Playgroud)

或者有人知道另一种方法吗?

Bra*_*zie 1

from想要一个文件或路径。你提供给它的generatePomFileForMavenJavaPublication是一个任务,它绝对不是文件或路径,所以这是行不通的。

您可以做的就是generatePomFileForMavenJavaPublication为它创建先决条件jar并获取它在构建目录中创建的 pom。

像下面这样的东西应该可以完成这个任务:

jar {
    dependsOn generatePomFileForMavenJavaPublication
    from("$builddir/pom.xml") //Or whatever path it goes to in the generate task.
    into("META-INF/maven/$project.group/$project.name")
}
Run Code Online (Sandbox Code Playgroud)

  • 看来 gradle 无法完成任务generatePomFileForMavenJavaPublication(我编辑了我的问题,发现来自 gradle 的另一条错误消息) (2认同)