【问题标题】:Gradle, War, tomcat and manifestGradle, War, tomcat 和 manifest
【发布时间】:2015-05-06 21:53:15
【问题描述】:

我正在尝试运行文档中提供的战争文件。我愿意:

$ ./gradlew -Pprod war
$ java -jar  ./build/libs/jhipster-0.1-SNAPSHOT.war --spring.profiles.active=prod
no main manifest attribute, in ./build/libs/jhipster-0.1-SNAPSHOT.war

当我将 Main-Class 属性添加到战争块时:

war {
    baseName = 'jhipster'
    version =  '0.1-SNAPSHOT'
    manifest {
        attributes 'Main-Class': 'com.jhipster.web.Application'
    }
}

我收到“错误:无法找到或加载主类 com.jhipster.web.Application”

在 spring-boot gradle 插件文档http://docs.spring.io/spring-boot/docs/current/reference/htmlsingle/#build-tool-plugins-gradle-packaging 中说它应该使用 main() 方法找到 Application 类,但不知何故 MANIFEST.MF 只包含一行:

Manifest-Version: 1.0

我做错了什么?

【问题讨论】:

  • 重新打包为 jar 文件而不是战争。您可以尝试部署到 tomcat 作为测试

标签: java spring gradle spring-boot jhipster


【解决方案1】:

war 任务不运行 Spring Boot 的重新打包任务,因此您会得到一个传统的不可执行的 war 文件,它的清单中没有 Main-Class 属性。

尝试运行buildbootRepackage

$ ./gradlew -Pprod bootRepackage

【讨论】:

  • "./gradlew -Pprod bootRepackage" 成功了,war 似乎正在运行 java -jar .... 但是 .war.original 仍然没有。所以我该怎么做?报告文档中的错误或 Spring 构建工具中的错误?
  • .war.original 是 Spring Boot 重新打包之前的 war 文件。它不打算与java -jar 一起运行。因为您可以使用java -jar 运行.war 文件,所以一切都按预期工作
猜你喜欢
  • 1970-01-01
  • 2021-07-26
  • 2011-05-23
  • 2017-09-21
  • 2015-09-12
  • 2014-11-11
  • 1970-01-01
  • 2012-03-01
相关资源
最近更新 更多