为了账号安全,请及时绑定邮箱和手机立即绑定

Spring Boot 使用 1.5.6 发布重新打包的子模块 jar

Spring Boot 使用 1.5.6 发布重新打包的子模块 jar

互换的青春 2022-06-15 09:51:17
我们已经将一个 Maven 多模块项目转换为 gradle,并且在发布 Spring Boot jar 时遇到了问题。设置是这样的root|- module1|- common|- common-test|- module2-common|- module2-write|- module3-common|- module3-write|- module4|- module5|- deploydeploy包含重新打包的 jar。发布时(使用 maven-publish),工件只有几千字节大。显然,它实际上并没有发布deployjar。部署build.gradle.ktsimport org.flywaydb.gradle.task.FlywayMigrateTaskimport org.springframework.boot.gradle.repackage.RepackageTaskimport org.springframework.boot.gradle.run.BootRunTaskplugins {    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"    }}根build.gradle.ktsplugins {    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"    ...}对于出版物部分,我尝试指定 from(components["java"])、artifact(file("deploy/build/libs/deploy-${project.version}.jar"))和上述选项。所有结果都导致发布的 jar 文件只有 1-3KB 大。我已尝试将发布块移动到 deploy 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.gradle 插件的 Spring Boot 文档似乎没有列出任何关于此的内容。
查看完整描述

1 回答

?
MYYA

TA贡献1868条经验 获得超4个赞

关于 Wilkinson 先生的评论,他认为 Spring Boot 似乎不支持 Gradle 5 是完全正确的。解决方案是不要platform()在包含 spring boot 插件的一个模块中使用,而是platform()在其他任何地方使用。这不是一个长期的解决方案!这在我们的例子中是完美的,因为我们直接从 Maven 过渡到 Gradle,然后立即从 Spring Boot 1 过渡到 Spring Boot 2。


deploy/build.gradle.kts

plugins {

    id("org.springframework.boot") version ("1.5.6.RELEASE")

    id("io.spring.dependency-management") version("1.0.6.RELEASE")

    id("nebula.maven-publish")

    java

    …

}

dependencyManagement {

    imports { mavenBom("org.springframework.boot:spring-boot-dependencies:${extra["springBootVersion"]}") }

}

build.gradle.kts除了deploy和_root

dependencies {

    implementation(platform("org.springframework.boot:spring-boot-dependencies:${extra["springBootVersion"]}"))

    …

}


查看完整回答
反对 回复 2022-06-15
  • 1 回答
  • 0 关注
  • 198 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信