【问题标题】:Getting spring boot jar files through gradle通过gradle获取spring boot jar文件
【发布时间】:2016-02-08 16:07:53
【问题描述】:

spring框架希望用户使用依赖工具下载框架,所以尝试使用gradle。我从他们的网站http://docs.spring.io/spring-boot/docs/current-SNAPSHOT/reference/htmlsingle/#howto得到了这个样本

buildscript {
    repositories {
        jcenter()
        maven { url "http://repo.spring.io/snapshot" }
        maven { url "http://repo.spring.io/milestone" }
    }
    dependencies {
        classpath("org.springframework.boot:spring-boot-gradle-plugin:1.3.0.BUILD-SNAPSHOT")
    }
}

apply plugin: 'java'
apply plugin: 'spring-boot'

jar {
    baseName = 'root'
    version =  '0.0.1-SNAPSHOT'
}

repositories {
    jcenter()
    maven { url "http://repo.spring.io/snapshot" }
    maven { url "http://repo.spring.io/milestone" }
}

dependencies {
    compile("org.springframework.boot:spring-boot-starter-web")
    testCompile("org.springframework.boot:spring-boot-starter-test")
}

我将它保存到一个名为 build.gradle 的文件中。然后在 CMD 中我转到 build.grade 文件所在的目录并输入:

gradle build

它似乎运行良好,但对建筑物它不工作,这是我从命令提示符得到的最后一个日志:

:compileJava UP-TO-DATE
:processResources UP-TO-DATE
:classes UP-TO-DATE
:findMainClass

:罐子 :bootRepackage 失败

FAILURE: Build failed with an exception.

* What went wrong:
Execution failed for task ':bootRepackage'.
Unable to find main class
* Try:
Run with --stacktrace option to get the stack trace. Run with --info or --debug
option to get more log output.

BUILD FAILED

Total time: 9.664 secs

我不明白这个 "> 无法找到主类"。我只想获取所有 jar 文件并将它们放在我的 Eclipse 项目的 WEB-INF/lib 中。我对 gradle 非常陌生。我该怎么办?

【问题讨论】:

  • 您的项目中可能缺少一个带有main 方法的类(带有@SpringBootApplication 注释)。
  • @orid 我不明白,我还没有创建任何项目。我只想在创建任何项目之前下载所有 spring boot jar 文件。我错过了什么吗?
  • 在这种情况下添加:bootRepackage {enabled = false} 它将重新打包关闭您的项目构建脚本。
  • @orid 完成。它现在可以工作了,但我只能找到一个 jar 文件(hello.jar)?就这些了吗?
  • 是的,它是项目 jar(没有 spring-boot “工作”)。如果您只想测试您正在使用的依赖项是否存在,这已经足够了,但对于 Spring Boot 应用程序而言无用。

标签: spring gradle spring-boot


【解决方案1】:

我不太清楚,根据您的 cmets,如果您没有项目源,但由于某种原因想要下载依赖库,您想要实现什么。 Gradle 不是这样工作的,所有的库都是按需下载的,也就是说,它们会被下载,然后你,例如,尝试构建你的源文件。

您得到的异常意味着,gradle spring boot 插件的任务bootRepackage在您的项目中找不到主类。这个主类对于这个任务是强制性的,因为这个任务会创建一个独立的可执行 jar。

当然,可以通过自定义任务下载 deps,例如:

task getDeps(type: Copy) {
  from sourceSets.main.runtimeClasspath
  into 'runtime/'
}

但您似乎没有正确理解它是如何工作的。您应该先尝试阅读gradle user guide,然后让 gradle 为您构建项目,而不仅仅是组合一些库。

【讨论】:

  • 我只想获取所有 jar 文件并将它们放在我的 Eclipse 项目的 WEB-INF/lib 中。到目前为止,这是我在使用某些库时唯一知道的。
  • @morbidCode 你的意思是,你不会使用 gradle 作为构建工具,但会使用 eclipse 或其他东西?顺便说一句,您可以使用答案中的任务并通过将 witn 放入参数并更改配置以获取所需的库来获得所需的内容。
猜你喜欢
  • 2021-11-08
  • 2017-11-03
  • 2017-07-12
  • 1970-01-01
  • 2014-08-30
  • 2017-08-16
  • 1970-01-01
  • 2017-06-18
  • 2021-03-05
相关资源
最近更新 更多