#java #spring-boot #kotlin #gradle #artifactory
#java #spring-boot #kotlin #gradle #artifactory
Вопрос:
Я пытаюсь опубликовать jar-файл Spring Boot в 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.
Если я раскомментирую закомментированный материал, я получаю:
- Что пошло не так: публикация с именем ‘mavenJava’ не найдена.
Как я могу заставить эту штуку публиковать мои файлы jar?
Ответ №1:
Попробуйте это:
publishing {
publications {
register("mavenJava", MavenPublication::class) {
from(components["java"])
}
}
}