Мы преобразовали многомодульный проект maven в gradle, и у нас возникли проблемы с публикацией весеннего загрузочного фляги.
Установка выглядит так:
root
|- module1
|- common
|- common-test
|- module2-common
|- module2-write
|- module3-common
|- module3-write
|- module4
|- module5
|- deploy
deploy
содержит перепакованный сосуд.
При публикации (используя maven-publish) артефакт имеет размер всего несколько килобайт.Очевидно, что он на самом деле не публикует банку deploy
.
Deploy build.gradle.kts
import org.flywaydb.gradle.task.FlywayMigrateTask
import org.springframework.boot.gradle.repackage.RepackageTask
import org.springframework.boot.gradle.run.BootRunTask
plugins {
kotlin("jvm")
id("org.springframework.boot") version ("1.5.6.RELEASE")
id("io.spring.dependency-management") version("1.0.6.RELEASE")
id("org.flywaydb.flyway")
java
}
tasks {
withType<Jar> {
baseName = project.name
version = project.version as String
}
val implementation = configurations.getByName("implementation")
configurations.create("includeAllJars") {
this.extendsFrom(implementation)
}
withType<RepackageTask> {
this.setCustomConfiguration("includeAllJars")
// this.classifier = "exec"
}
}
root build.gradle.kts
plugins {
base
java
idea
kotlin("jvm") version "1.2.51"
kotlin("plugin.jpa") version ("1.2.51")
kotlin("plugin.spring") version ("1.2.51")
id("nebula.maven-publish") version "8.1.0"
...
}
allprojects {
group = "com.company.group"
ext {
set("springBootVersion", "1.5.6.RELEASE")
}
apply {
plugin("org.jetbrains.kotlin.jvm")
plugin("org.jetbrains.kotlin.plugin.jpa")
plugin("org.jetbrains.kotlin.plugin.spring")
}
dependencies {
implementation(kotlin("stdlib-jdk8"))
implementation(kotlin("reflect"))
implementation(platform("org.springframework.boot:spring-boot-dependencies:${extra["springBootVersion"]}"))
...
}
}
val sourcesJar by tasks.registering(Jar::class) {
classifier = "sources"
from(sourceSets["main"].allSource)
}
publishing {
publications {
register("maven", MavenPublication::class) {
// from(project(":server-deploy").components["java"])
// artifact(sourcesJar.get())
// artifact(file("deploy/build/docker/runnable.jar"))
}
}
repositories {
...
}
}
Для раздела публикаций я попытался указать from(components["java"])
, artifact(file("deploy/build/libs/deploy-${project.version}.jar"))
ивышеуказанные варианты.Все результаты приводят к тому, что опубликованная банка составляет всего 1-3 КБ.
Я попытался переместить блок публикаций в развертывание build.gradle.kts
, но это приводит к этой ошибке
* What went wrong:
Execution failed for task ':deploy:publishMavenPublicationToMavenLocal'.
> Failed to publish publication 'maven' to repository 'mavenLocal'
> Invalid publication 'maven': POM file is invalid. Check any modifications you have made to the POM file.
Документы Spring Boot для плагина gradle donКажется, ничего не перечислять по этому поводу.