我的问题是:当我在 intellij 的 gradle 窗口中单击 jar 时,为什么 jar-creation 与 gradlew build 一起工作,而我看到“Task :jar SKIPPED”?我该如何在 IntelliJ 中修复它?
(它是 org.springframework.boot, .. 'org.springframework.boot:spring-boot-starter-web')
(昨天我在 maven 中失败了,“.jar 中没有主要 list 属性”)
最佳答案
这是因为 Springboot Gradle 插件会创建一个 bootJar
任务,默认情况下将禁用 jar
和 war
任务,如下所述: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/