为什么Gradle忽略groupId / artifactId?

时间:2014-10-21 17:22:25

标签: gradle

这是我的Gradle构建:

apply plugin: 'groovy'
apply plugin: 'maven'

group = 'myorg'

repositories {
    mavenCentral()
}

dependencies {
    compile 'org.codehaus.groovy:groovy-all:2.3.3'
    compile 'org.apache.httpcomponents:httpclient:4.3.5'
    compile 'org.slf4j:slf4j-api:1.7.5'

    testCompile 'junit:junit:4.11'
}

task sourcesJar(type: Jar, dependsOn: classes) {
    classifier = 'sources'
    from sourceSets.main.allSource
}

artifacts {
    archives sourcesJar
}

task createPom << {
    pom {
        project {
            groupId group
            artifactId "myapp"
            version version
        }
    }.writeTo("build/libs/pom.xml")
}

我正在使用的构建调用:

gradle clean build groovydoc sourcesJar createPom -Pversion=SNAPSHOT

当我运行时:

  • POM文件的创建时groupIdartifactIdversion都在XML中正确显示;但
  • 生成的JAR的名称是项目所在的任何文件夹。例如,如果我的项目根目录是“fizz”,并且上面的构建文件位于fizz/build.gradle,那么上面的构建调用会产生fizz-<version>.jar(其中<version>是任何值我在命令行上指定)。如果我现在将fizz/目录重命名为buzz/并重新运行相同的构建调用,则会生成buzz-<version>.jar

我的问题:我在哪里/哪里(什么文件)硬编码groupIdartifactId以便myapp-<version>.jar构建,无论项目根目录的名称如何吗

1 个答案:

答案 0 :(得分:8)

项目根目录中需要settings.gradle,在内部设置rootProject.name = 'artifactId'这将修复项目名称。

可以通过groupversion属性在build.gradle文件中设置groupId和version。