java - 使用Spring Boot的Kotlin Gradle构建不会将jar发布到Artifactory-仅构建信息

标签 java spring-boot kotlin gradle artifactory

我正在尝试将Spring Boot jar发布到Artifactory,但无法使其正常工作。这是我的build.gradle.kts:

import org.jetbrains.kotlin.gradle.tasks.KotlinCompile

group = "com.blah"
version = "0.0.2"
java.sourceCompatibility = JavaVersion.VERSION_1_8

plugins {
    id("maven-publish")
    id("org.springframework.boot") version "2.3.1.RELEASE"
    id("io.spring.dependency-management") version "1.0.9.RELEASE"
    id("com.google.cloud.tools.jib") version "2.5.0"
    kotlin("jvm") version "1.3.72"
    kotlin("plugin.spring") version "1.3.72"
    id("com.jfrog.artifactory") version "4.13.0"
}

tasks.getByName<Jar>("jar") {
    enabled = true
}


tasks.getByName<Jar>("bootJar") {
    classifier = "application"
}

repositories {
    mavenCentral()
    maven {
        setUrl("https://artifactory:443/artifactory/txo-maven-virtual") 
        credentials {               
            username = System.getenv("ARTIFACTORY_USR") 
            password = System.getenv("ARTIFACTORY_PSW")
        }
    }
}

dependencies {
    implementation("org.springframework.boot:spring-boot-starter")
    implementation("org.springframework.boot:spring-boot-starter-web")
    implementation("com.fasterxml.jackson.module:jackson-module-kotlin")
    implementation("org.jetbrains.kotlin:kotlin-reflect")
    implementation("org.jetbrains.kotlin:kotlin-stdlib-jdk8")

    testImplementation("org.springframework.boot:spring-boot-starter-test") {
        exclude(group = "org.junit.vintage", module = "junit-vintage-engine")
    }
}

//publishing {
//    (publications) {
//        "mavenJava" (MavenPublication::class) {
//            from(components["java"])
//        }
//    }
//}

artifactory {
    setContextUrl("https://artifactory/artifactory")
    publish(delegateClosureOf<org.jfrog.gradle.plugin.artifactory.dsl.PublisherConfig> {
        repository(delegateClosureOf<org.jfrog.gradle.plugin.artifactory.dsl.DoubleDelegateWrapper> {
            setProperty("repoKey", "txo-")
            setProperty("username", System.getenv("ARTIFACTORY_USR"))
            setProperty("password", System.getenv("ARTIFACTORY_PSW"))
            setProperty("maven", true)
        })
        defaults(delegateClosureOf<groovy.lang.GroovyObject> {
            invokeMethod("publications", "mavenJava")
        })
    })
}

tasks.withType<Test> {
    useJUnitPlatform()
}

tasks.withType<KotlinCompile> {
    kotlinOptions {
        freeCompilerArgs = listOf("-Xjsr305=strict")
        jvmTarget = "1.8"
    }
}
这将构建并将构建信息推送到artifactory/api/build,但不会推送任何jar。
如果我不评论已注释掉的内容,则会得到:
  • What went wrong: Publication with name 'mavenJava' not found.

我怎样才能得到这个东西来发布我的jar文件?

最佳答案

试试这个:

publishing {
    publications {
        register("mavenJava", MavenPublication::class) {
            from(components["java"])
        }
    }
}

关于java - 使用Spring Boot的Kotlin Gradle构建不会将jar发布到Artifactory-仅构建信息,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64338981/

相关文章:

java 每次运行 for 循环时更改对象的标题 NOOB 问题

java - Google-Eclipse 插件是否自动生成 war 目录内容?

java - Spring Data - MongoDb - 如果我更新同一文档两次会发生什么

java - 如何通过 Flyway 使用 Spring Boot/Spring Security 的 JDBC 身份验证

kotlin - 为什么 runBlocking 不阻塞当前线程?

android - Swift 在 Kotlin 中的 replaceSubrange

java - 如何使用 Jackson 将对象转换为使用默认类型的 map ?

java - NullPointerException : ProGuard, Spring 启动

kotlin - kotlin 控制台中定义的变量范围是什么?

java - Android 服务启动失败