我正在阅读“Pro Spring Boot”一书中的“扩展Spring Boot Apps”一章。在本章中,作者首先解释如何创建自己的spring-boot-starter-。可以找到源代码here。我对maven和spring都很陌生。
如果我使用与编写器1.3.3.RELEASE相同的spring-boot版本,它可以正常工作。但它不适用于当前版本的spring-boot,我希望它能够与当前版本一起使用。
基本文件夹结构:
**/journal/
|-- spring-boot-journal
| |-- src
| |-- pom.xml
|-- journal-spring-boot-autoconfigure
| |-- src
| |-- pom.xml
|-- journal-spring-boot-starter
| |-- src
| |-- pom.xml
|-- pom.xml
使用spring-boot版本1.4.2.RELEASE而不是1.3.3.RELEASE执行'** / journal / mvn clean package -DskipTests = true'后得到的错误是:
** / journal-spring-boot-autoconfigure / src / ** / JournalAutoConfiguration.java找不到符号:class JournalRepository
从子模块spring-boot-journal导入类不再起作用。 The spring-boot docs未介绍如何从-spring-boot-autoconfigure模块中的子模块导入。我如何在当前版本的spring-boot(1.4.2.RELEASE)中执行/修复此问题?
我注意到jar包装之间存在差异,可以解释错误:
1.4.2.RELEASE:BOOT-INF / classes / com / apress / spring / repository / JournalRepository.class
1.3.3.RELEASE:com / apress / spring / repository / JournalRepository.class
答案 0 :(得分:3)
JournalRepository
必须保留模块而不是完整的Spring Boot应用程序的模块。看一下源代码,显然不是这样,所以我要联系Felipe,看看是否可以改变。
在1.4中(正如您自己发现的那样),包装已经改变为强制执行:不是将类放在通常位置以用于“简单的罐子”,而是将它们放在一个单独的位置以使事情保持一致(您也不会使用战争作为图书馆的依赖。)
maven插件的更新文档解释了how you can use a classifier
so that the main artifact remains a simple library