【问题标题】:Publish java library with custom primary artifact使用自定义主工件发布 java 库
【发布时间】:2019-09-22 11:16:22
【问题描述】:

我正在尝试使用自定义主要工件创建一个 java 库.. 我关注了这个documentation,但问题是当我运行“发布”任务时,我得到了这个错误。

Could not determine the dependencies of task ':publishMavenPublicationToMyRepoRepository'.
> Task with path 'rpm' not found in root project 'commons'.

这是我的 gradle 文件:

import com.netflix.gradle.plugins.rpm.Rpm

plugins {
    `java-library`
    `maven-publish`
    id("nebula.ospackage") version "7.4.1"
    kotlin("jvm") version "1.3.50"
}

group = "com.test"
version = "1.0.0"
java.sourceCompatibility = JavaVersion.VERSION_1_8

repositories {
    mavenCentral()
}

dependencies {
    implementation("javax.xml.bind:jaxb-api:2.3.1")
    implementation("io.jsonwebtoken:jjwt:0.9.1")
    implementation("com.googlecode.libphonenumber:libphonenumber:8.10.14")
    implementation("com.fasterxml.jackson.module:jackson-module-kotlin:2.9.9")
}

tasks.withType<Rpm> {
    version = "1.0.0"
    release = "1"
    packageName = "com.test.commons"
    into("$buildDir/rpms/com.test.commons.rpm")
}

val rpmFile = file("$buildDir/rpms/com.test.commons.rpm")
val rpmArtifact = artifacts.add("archives", rpmFile) {
    type = "rpm"
    builtBy("rpm")
}

publishing {
    publications {
        create<MavenPublication>("maven") {
            artifact(rpmArtifact)
        }
    }

    repositories {
        maven {
            name = "myRepo"
            url = uri("file://${buildDir}/repo")
        }
    }
}

我认为问题出在 rpm 任务中,我该如何解决?

【问题讨论】:

    标签: java gradle gradle-kotlin-dsl


    【解决方案1】:

    nebula.rpm 插件可以使用 rpm 任务类型,如 wiki here 中所述

    plugins {
        id("nebula.ospackage") version "7.4.1"
        id("nebula.rpm") version "7.4.1"
    }
    

    不熟悉这个插件,但是貌似申请nebula.ospackage不够用。

    【讨论】:

    • 感谢您的回复。我尝试了您的解决方案,但我总是遇到一些错误
    【解决方案2】:

    nebula.ospackage 插件将创建一个名为buildRpm 类型为com.netflix.gradle.plugins.rpm.Rpm 的任务。

    在您的脚本中,您引用了一个名为 rpm 的任务,但该任务不存在:这解释了您遇到的错误 (&gt; Task with path 'rpm' not found in root project 'commons'.)

    只需更新您的脚本以使用正确的任务名称:

    val rpmArtifact = artifacts.add("archives", rpmFile) {
        type = "rpm"
        builtBy("buildRpm") // <=== instead of "rpm"
    }
    

    注意:你不必申请插件nebula.rpmnebula.ospackage就够了。

    【讨论】:

      猜你喜欢
      • 2021-05-16
      • 1970-01-01
      • 1970-01-01
      • 2021-05-31
      • 1970-01-01
      • 1970-01-01
      • 2020-04-09
      • 1970-01-01
      • 2019-01-31
      相关资源
      最近更新 更多