Когда вы пишете:
springBoot{
layout='ZIP'
}
Вы закрываете расширение springBoot, и все, что вы здесь пишете, будет разрешено как против самого расширения, так и с окружающей областью, являющейся классом Gradle Project. в этом случае.
В результате вы пытаетесь установить переменную layout
, которая, как вы ожидаете, находится в расширении, но это не так. Вместо этого просто случается, что в классе Gradle Project
есть переменная с тем же именем . И эта переменная только для чтения, поэтому Gradle жалуется. Конечно, это не тот, который вы намереваетесь использовать в первую очередь.
Так что теперь вы, вероятно, спрашиваете, почему в расширении springBoot нет переменной layout
, как сказано в документации,И ответом на это является то, что вы просматриваете документацию для Spring Boot 1.4, тогда как вы используете Spring Boot 2.1. Если вы перейдете к документации для версии, которую вы используете , вы увидите, что больше нет свойства макета. Вместо этого, если вы хотите создать zip-дистрибутив вашего приложения, вы можете использовать плагин application
. Но это не заставит его использовать PropertiesLauncher.
Плагин Gradle не имеет документации о том, как использовать PropertiesLauncher, но если вы используете формат jar исполняемого файла (вы также можете использовать исполняемый файл war), это выглядит так:
bootJar {
manifest {
attributes 'Main-Class': 'org.springframework.boot.loader.PropertiesLauncher'
}
}
Затем вы можете загрузить дополнительные jar-файлы с помощью java -Dloader.path=path/to/extra/jars -jar demo-0.0.1-SNAPSHOT.jar
, переменной среды или одного из других методов, как указано в документации. Обратите внимание, что вы не можете использовать задачу bootRun
без дополнительных настроек, так как она не использует PropertiesLauncher.
Вы также спрашивали об использовании встроенной поддержки спецификации в Gradle. Вы можете удалить плагин io.spring.dependency-management
и использовать вместо него зависимость от платформы, например:
dependencies {
implementation platform(group: 'org.springframework.boot', name: 'spring-boot-dependencies', version: '2.1.9.RELEASE')
}