Моё загрузочное приложение Spring, использующее Spring boot 1.5.12 и Java 8, прекрасно работает в моей среде разработки, но при развертывании в среде тестирования я сталкиваюсь с трудностями:
Я запускаю приложение с помощью: mvn spring-boot: run, и выполнение останавливается с ошибкой:
java.lang.IllegalArgumentException: Name for parameter binding must not be null or empty! On JDKs < 8, you need to use @Param for named parameters, on JDK 8 or better, be sure to compile with -parameters.
Я провел несколько поисков и понял, что для того, чтобы методы моих репозиториев работали, как этот:
@RepositoryRestResource(collectionResourceRel = "users", path = "users")
public interface UserRepository extends JpaRepository<User, Long>, UserRepositoryCustom {
@Query("SELECT u FROM User u WHERE u.primaryEmail.emailAddress = :emailAddress "
+ "AND u.deleted = 0")
Optional<User> findByPrimaryEmailAddress(String emailAddress);
Мне нужно скомпилировать с параметром "-parameters", потому что я не помещаю аннотацию @Param в параметре "emailAddress".
Он работает в Eclipse, поскольку для компилятора активирована опция, но когда я использую maven для компиляции приложения вне Eclipse, эта опция должна быть установлена.
Моя проблема заключается в том, что в документации по загрузке Spring , и так как я использую по умолчанию spring-boot-maven-plugin в моем pom.xml
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
он должен управлять этим параметром компилятора автоматически, и, похоже, это не так.
Когда я сравниваю spring-boot-starter-parent-1.5.12.RELEASE.pom и pom последней версии весенней загрузки на github, я не могу увидеть свою версию 1.5.12
<parameters>true</parameters>
У вас есть идеи, как я могу исправить мою проблему?
Я попытаюсь заменить плагин spring-boot-maven на плагин maven-compiler-plugin аргументом компилятора "-parameters", но я был бы более уверен, если бы мог использовать плагин spring-boot-maven-plugin по умолчанию .
Спасибо!