我有一个Spring Boot 2.1 Web应用程序。效果很好。我可以将其打包为WAR或JAR。 在我的pom.xml文件中,使用:
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.1.3.RELEASE</version>
</parent>
该应用程序具有许多实体类和许多Spring Data存储库。几乎总是我们将其部署为WAR文件。
这是问题:有时我们需要在数据库上执行命令行或批处理。例如,我们可能想运行一个过程来调整存储在数据库中的所有图像的大小,这些图像应由管理员从命令行运行。
如果mvn install在本地Maven存储库中安装JAR文件,那很好,我可以在另一个项目中使用该工件来访问我的实体和存储库定义。我已经尝试了很多事情,但是每当我将项目构建为JAR文件时,当我查看JAR时,我所有的类都在BOOT-INF / classs中,这不允许它们从另一个项目中引用。 / p>
我能够通过在spring-boot-maven-plugin中使用重新打包目标来解决此问题。但是,当我这样做时,它确实生成了一个jar文件,但是我的CLI应用程序无法使用创建的存储库bean正确启动。
我阅读了Spring Boot文档:
像war文件一样,不能使用Spring Boot应用程序 作为依赖。如果您的应用程序包含您想要的类 与其他项目共享,建议的方法是移动 代码放入一个单独的模块中。然后可以依赖单独的模块 取决于您的应用程序和其他项目。
有没有更简单的方法来执行此操作,这样我就不必创建另一个项目并进行管理了?还是为实体和Spring Data存储库创建一个单独的项目是一个好习惯吗?
答案 0 :(得分:0)
因此,简而言之,您只想拥有一个包含您的实体和存储库的库?这样就足以配置一个简单的maven项目(标准项目),而不是从Spring Boot继承而来。
由于Spring Boot在幕后使用了Spring Data JPA,因此您只需要Spring Data JPA声明,因此添加将其标记为XCTest
的依赖项。
Linux
这不允许项目本身包含Spring Data JPA依赖关系,因为它将由使用Spring Boot的最终项目包含。但是,您需要声明要使用的参考版本,可以使用当前Spring Boot项目使用的参考版本(可以在maven依赖树中查看)。
https://spring.io/projects/spring-data-jpa
Difference between maven scope compile and provided for JAR packaging