使用 Gradle 在本地发布不起作用

Publishing locally with Gradle not working

我的目录结构如下:

myapp/
    src/main/resources/
        <lots of code>
    build.gradle

具有以下build.gradle

apply plugin: 'java'
apply plugin: 'maven'
apply plugin: 'eclipse'

sourceCompatibility = '1.8'
targetCompatibility = '1.8'

[compileJava, compileTestJava]*.options*.encoding = 'UTF-8'

group = 'net.myuser'

repositories {
    jcenter()
}

dependencies {
    compile(
        <dependencies here>
    )
}

jar {
    baseName = 'myapp'
}

task writePom << {
    pom {
        project {
            groupId group
            artifactId 'myapp'
            version version

            inceptionYear '2015'
            licenses {
                license {
                    name 'myapp'
                    distribution 'Blah blah blah'
                }
            }
        }
    }.writeTo("build/libs/pom.xml")
}

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

task javadocJar(type: Jar, dependsOn: javadoc) {
    classifier = 'javadoc'
    from javadoc.destinationDir
}

artifacts {
    archives sourcesJar
    archives javadocJar
}

artifacts {
    archives(file("${buildDir}/libs/myapp-${version}.jar")) {
        name "myapp"
        classifier ""
    }
}

当我这样做时:

./gradlew clean build writePom install -Pversion=0.1.0

我遇到两个问题:

  1. 在生成的 build/libs/pom.xml 中,groupId 显示为 null;和
  2. 我在 ~/.gradle/caches/modules-2 下找不到 net.myuser 目录,这告诉我 install 不工作

所以我问:我需要更改什么才能使 groupId 不为空,以及如何让 install 发布以下所有内容:

根据评论,使用 groupId project.group 而不是 groupId group 以正确设置 <groupId>


关于install任务,请看Gradle Maven Plugin documentation:

Installs the associated artifacts to the local Maven cache, including Maven metadata generation.

默认情况下,本地 Maven 缓存 位于 ~/.m2/repository,因此您看错了位置。安装任务不会篡改 ~/.gradle/caches/modules-2,它(顾名思义)只是已解决依赖项的缓存。


通过使用 Maven 插件,Gradle 已经为您创建了一个 POM 文件。所以请检查您是否真的需要自定义 writePom 任务。

此外,主要工件是自动安装的,因此这可能是多余的:

artifacts {
    archives(file("${buildDir}/libs/myapp-${version}.jar")) {
        name "myapp"
        classifier ""
    }
}