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

时间:2015-10-19 14:35:58

标签: java gradle publishing

我有以下目录结构:

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. 我在net.myuser下找不到~/.gradle/caches/modules-2目录,告诉我install无效
  3. 所以我问:我需要更改哪些内容以使groupId不为空,以及如何install发布以下所有内容:

    • JAR
    • 来源JAR
    • Javadoc JAR
    • pom.xml

1 个答案:

答案 0 :(得分:1)

根据评论,使用groupId project.group代替groupId group,以便正确设置<groupId>

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

  

将关联的工件安装到本地Maven缓存,包括Maven元数据生成。

默认情况下,本地Maven缓存位于~/.m2/repository,因此您正在查看错误的位置。安装任务不会篡改~/.gradle/caches/modules-2,这是(如名称所暗示的)只有已解析依赖项的缓存。

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

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

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