spring-boot - gradle: Task :jar SKIPPED 当我使用 gradlew build 获取 jar 时

标签 spring-boot gradle manifest gradlew

我的问题是:当我在 intellij 的 gradle 窗口中单击 jar 时,为什么 jar-creation 与 gradlew build 一起工作,而我看到“Task :jar SKIPPED”?我该如何在 IntelliJ 中修复它?

  • 刚刚用 spring 初始化程序创建了一些东西,并按原样在 intellij 中加载了项目。
    (它是 org.springframework.boot, .. 'org.springframework.boot:spring-boot-starter-web')
  • 我想知道 Task :jar SKIPPED(也没有创建 jar)
  • 然后我发现当我从控制台启动时我得到了 jar。
  • (并且 jar 运行良好,它找到了主类 - 即使在 build.gradle 中没有 jar manifest 属性)

  • (昨天我在 maven 中失败了,“.jar 中没有主要 list 属性”)

    最佳答案

    这是因为 Springboot Gradle 插件会创建一个 bootJar任务,默认情况下将禁用 jarwar任务,如下所述:https://docs.spring.io/spring-boot/docs/current/gradle-plugin/reference/html/#packaging-executable-and-normal
    所以你需要执行bootJar任务,来自 IDE。执行 gradlew build 时,任务bootJar由于插件创建的任务依赖关系,会自动执行。
    运行任务时 build (从控制台或 IDE),您可以看到 Gradle 根据任务依赖关系执行的任务,例如:

    > Task :backend:compileJava
    > Task :backend:processResources
    > Task :backend:classes
    > Task :backend:bootJar      ## <== this is the task register by Springboot plugin, which produces the "Fat/executable" jar
    > Task :backend:jar SKIPPED  ## <== task disabled by Springboot plugin
    > Task :backend:assemble
    > Task :backend:processTestResources
    > Task :backend:testClasses
    > Task :backend:test
    > Task :backend:check
    > Task :backend:build
    
    对于您的评论

    the jar runs fine, it finds the main class - even without jar manifest attribute in build.gradle


    Springboot 插件会自动为你配置,见:https://docs.spring.io/spring-boot/docs/current/gradle-plugin/reference/html/#packaging-executable-configuring-main-class
    编辑 27-05-2021
    从 Springboot 2.5 开始,jar默认情况下不再禁用。在发行说明中查看更多详细信息 here

    关于spring-boot - gradle: Task :jar SKIPPED 当我使用 gradlew build 获取 jar 时,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62360840/

    相关文章:

    delphi - 是否可以通过在运行时添加应用程序 list 来执行 **运行时主题** 的运行时可选切换?

    .net - 如何将 list 添加到.NET DLL?

    java - spring jdbc集成测试

    java - 如何解决Spring boot @EnableAsync和@Async问题?

    安卓工作室 Gradle : Error:Configuration with name 'compile' not found

    gradle - 如何为kotlin2JS插件设置gradle outout文件夹?

    ios - 在 iOS 中添加到主屏幕时,HTML5 网络应用程序不缓存

    java - Spring Boot 不起作用?

    java - 从 DynamoDB 获取大量数据?

    gradle - 新的gradle格式困惑和迁移原因找不到方法testCompile()