【问题标题】:Spring Boot Issue between jar and task that build jar: Gradlejar和构建jar的任务之间的Spring Boot问题:Gradle
【发布时间】:2020-08-27 20:06:44
【问题描述】:

现在我遇到了这个问题,我需要将我的 SpringBoot 应用程序转换为可执行 jar,但它需要在任务中完成,而不仅仅是 gradle.build 中的配置。

所以我的build.gradle 中的下面的 sn-p 将生成一个可执行的 jar:

jar {
    manifest {
        attributes 'Main-Class': 'com.path.name.to.main.App'
    }
    from { configurations.compile.collect { it.isDirectory() ? it : zipTree(it) } }
}

一切正常,但是当我让 jar 创建任务时,jar 不再可执行并抛出此错误 错误:无法找到或加载主类 com.path.name.to.main.App

task makeJar(type: Jar) {
    archiveName = 'app.jar'
    manifest {
        attributes 'Main-Class': 'com.path.name.to.main.App'
    }
    from { configurations.compile.collect { it.isDirectory() ? it : zipTree(it) } }
}

根据我公司的部署方式,建议在 build.gradle 的任务中创建 jar,而不是上面提到的配置。

但是,我不确定为什么将其从 jar 配置移动到任务会影响实际创建的 jar 的结果,我需要做些什么来解决这个问题?

【问题讨论】:

    标签: spring-boot gradle spring-boot-gradle-plugin


    【解决方案1】:

    首先,您所说的jar 配置实际上是Jar 类型的任务,它只是由Gradle 创建的(很可能是由它的Java plugin)。查看有关由应用于您的构建脚本的插件创建的任务的文档。

    例如,您可以在创建任务 makeJar 后以与任务 jar 相同的方式访问您的任务:

    task makeJar(type: Jar)
    
    makeJar {
       // configuration things
    }
    

    根据我公司的部署方式,建议在build.gradle 的任务中创建jar,而不是上面提到的配置。

    知道jar也是一个任务,说明你们公司的这个部署策略根本没有意义。您可以像手动创建任务一样配置和使用任务jar

    但是,有时同时生成仅包含项目类和可执行 JAR 的 JAR 文件是有意义的。由于jar 任务已经产生了第一个,我们需要另一个任务来产生第二个。可执行 JAR 也称为 fat oder uber JAR,实际上有一个 really good plugin 来创建它们。

    您的实际问题的根源在于任务jar,因为它是由Java 插件创建的,因此自动应用了一些配置,导致您的任务makeJar 丢失。通过from { configurations.compile.collect { it.isDirectory() ? it : zipTree(it) } } 行,compile 配置中的所有项目依赖项都添加到 JAR 中,但您自己的项目中的代码丢失了。以下代码添加了常规jar 任务的内容:

    task makeJar(type: Jar) {
        archiveName = 'app.jar'
        manifest {
            attributes 'Main-Class': 'com.path.name.to.main.App'
        }
        with jar
        from { configurations.compile.collect { it.isDirectory() ? it : zipTree(it) } }
    }
    

    【讨论】:

      猜你喜欢
      • 2018-04-06
      • 1970-01-01
      • 1970-01-01
      • 2014-04-21
      • 2016-02-08
      • 1970-01-01
      • 1970-01-01
      • 2018-11-15
      • 2016-09-29
      相关资源
      最近更新 更多