java - 使用自定义主要工件发布 Java 库

标签 java gradle gradle-kotlin-dsl

我正在尝试创建一个带有自定义主要工件的 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 任务中,我该如何解决?

最佳答案

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

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

不熟悉这个插件,但看起来应用nebula.ospackage就足够了。

关于java - 使用自定义主要工件发布 Java 库,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58048668/

相关文章:

java - 终止操作中执行什么事件

java - 从Java(然后是Eclipse)运行Maven,Gradle或其他基于批处理的脚本

java - 是否可以检查哪些 gradle 依赖项包含给定的类?

gradle - 使用 Kotlin DSL 构建 Fatjar 时出错

java - 当收到 NumberFormatException 时,如何阻止或重做 SWING 输入?

java - 除特定情况外如何匹配单个字符

java - 在 wildfly-swarm 上使用 TestNG 进行 Arquillian 测试

gradle - 如何在另一个子项目的gradle任务中从一个子项目调用代码?

kotlin - Gradle:仅在发布到本地时才更改工件名称

Android Studio 无法解析 org.jetbrains.kotlin :kotlin-gradle-plugin:1. 7.10