Gradle, война, кот и манифест

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

$ ./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, что он должен найти класс Application с main( ), но каким-то образом MANIFEST.MF содержит только одну строку:

Manifest-Version: 1.0

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


person Yuri Pimenov    schedule 05.03.2015    source источник
comment
Переупаковать в виде jar-файла, а не войны. Вы можете попробовать развернуть на tomcat в качестве теста   -  person farrellmr    schedule 05.03.2015


Ответы (1)


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

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

$ ./gradlew -Pprod bootRepackage
person Andy Wilkinson    schedule 05.03.2015
comment
./gradlew -Pprod bootRepackage сделал свое дело, война, похоже, идет с java -jar .... однако .war.original все еще нет. И что я должен делать? Сообщить об ошибке в документации или об ошибке в инструментах сборки Spring? - person Yuri Pimenov; 06.03.2015
comment
.war.original — это военный файл до того, как Spring Boot переупаковал его. Он не предназначен для запуска с java -jar. Поскольку вы можете запустить файл .war с помощью java -jar, все работает как положено. - person Andy Wilkinson; 07.03.2015