2015-03-05 7 views
2

Я пытаюсь запустить военный файл, как он представлен в документации. Я:Gradle, War, tomcat и манифест

$ ./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 

Когда я добавляю atribute Main-Class к войне блока:

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

Я получаю "Ошибка: Не удалось найти или загрузить основной класс com.jhipster.web.Application"

Говорят, в весенне-загрузочном Gradle плагин документации http://docs.spring.io/spring-boot/docs/current/reference/htmlsingle/#build-tool-plugins-gradle-packaging, что он должен найти класс Application с основной() метод, но как-то MANIFEST.MF содержит только одну строку:

Manifest-Version: 1.0 

Что я делаю неправильно?

+0

Упаковать как банку файл не война. Вы можете попробовать установить на tomcat в качестве теста – farrellmr

ответ

4

Задача war не выполняет задачу переупаковки Spring Boot, поэтому вы остаетесь с традиционным неиспользуемым военным файлом, который не имеет атрибута Main-Class в своем манифесте.

Попробуйте запустить build или bootRepackage вместо:

$ ./gradlew -Pprod bootRepackage 
+0

«./gradlew -Pprod bootRepackage» сделал трюк, похоже, война работает с java -jar .... однако .war.original все еще нет. И что же мне делать? Сообщить об ошибке в документации или ошибке в инструментах весной сборки? –

+0

'.war.original' является файлом войны до того, как Spring Boot переупаковала его. Он не предназначен для запуска с помощью java -jar. Поскольку вы можете запускать файл '.war' с помощью java -jar, все работает как ожидалось –

Смежные вопросы