Java 如何围绕spring boot构建一个不需要';不强制执行某个spring启动版本?

Java 如何围绕spring boot构建一个不需要';不强制执行某个spring启动版本?,java,spring,spring-boot,maven,spring-data-jpa,Java,Spring,Spring Boot,Maven,Spring Data Jpa,我试图在SpringBoot和SpringDataJPA之上构建一个库 我想要实现的是,因此该库没有显式地使用SpringBoot或SpringDataJPA的实现特性,我需要将其作为一个库,以获取包含项目的版本 目前,spring boot的版本是在 因此,我认为,一旦我将jar上传到maven存储库,并且每当有人依赖这个jar时,spring依赖项中可能会有冲突(来自他的项目和这个jar的内容) 因此,我的问题是,如果我将pom.xml中的依赖项作为可选项,这会解决问题吗?如果没有,我可以做

我试图在SpringBoot和SpringDataJPA之上构建一个库

我想要实现的是,因此该库没有显式地使用SpringBoot或SpringDataJPA的实现特性,我需要将其作为一个库,以获取包含项目的版本

目前,spring boot的版本是在

因此,我认为,一旦我将jar上传到maven存储库,并且每当有人依赖这个jar时,spring依赖项中可能会有冲突(来自他的项目和这个jar的内容)

因此,我的问题是,如果我将pom.xml中的依赖项作为可选项,这会解决问题吗?如果没有,我可以做什么其他替代解决方案

编辑:

下面是我在库中使用的spring类型列表:

org.springframework.data.jpa.repository.JpaRepository;
org.springframework.data.repository.NoRepositoryBean;
org.springframework.data.domain.Page;
org.springframework.data.domain.Pageable;
org.springframework.data.domain.Sort;
org.springframework.data.jpa.domain.Specification;
org.springframework.data.jpa.repository.support.JpaEntityInformation;
org.springframework.data.jpa.repository.support.SimpleJpaRepository;

为了构建库,您需要使用给定版本的依赖项。您需要选择一个,否则编译器无法创建类路径并编译代码

使用您的库的人可能会使用其他版本的依赖项。它们的版本(通常)会覆盖您的版本,因为它们在Maven依赖项中介中获胜。因此,您的库实际上将使用库用户指定的版本运行(如果库用户不使用您的依赖项,那么您的版本仍然存在)

所以,剩下的问题是:您的代码是否可以使用更新/不同版本的依赖项


这不能笼统地说,因为它取决于依赖项的维护者的工作方式。

要构建库,需要使用给定版本的依赖项。您需要选择一个,否则编译器无法创建类路径并编译代码

使用您的库的人可能会使用其他版本的依赖项。它们的版本(通常)会覆盖您的版本,因为它们在Maven依赖项中介中获胜。因此,您的库实际上将使用库用户指定的版本运行(如果库用户不使用您的依赖项,那么您的版本仍然存在)

所以,剩下的问题是:您的代码是否可以使用更新/不同版本的依赖项


这不能笼统地说,因为这取决于依赖项的维护者的工作方式。

这取决于您使用什么。如果您使用某些Spring(Boot)版本的接口、类,则严格地说,出于兼容性原因,您必须绑定到该版本。不能保证接口(特别是内部接口)在其他版本中仍然可用,或者已经添加了方法,您需要实现etc.@M.Deinum我使用了其中的一些列表(请参阅更新),我不需要将我的lib与特定版本的spring绑定,因为这将是无用的。还有其他选择吗?这些不是来自Spring,而是来自Spring数据JPA,使用这些类,您基本上可以将它们与Spring数据JPA以及特定的范围联系起来(因为版本之间可能会有差异)。如果您使用SpringDataJPA2.x来构建它,那么它肯定不会与版本1.x一起工作(因为您使用的类不存在、具有不同的契约或移动到不同的包中)。这取决于您使用的是什么。如果您使用某些Spring(Boot)版本的接口、类,则严格地说,出于兼容性原因,您必须绑定到该版本。不能保证接口(特别是内部接口)在其他版本中仍然可用,或者已经添加了方法,您需要实现etc.@M.Deinum我使用了其中的一些列表(请参阅更新),我不需要将我的lib与特定版本的spring绑定,因为这将是无用的。还有其他选择吗?这些不是来自Spring,而是来自Spring数据JPA,使用这些类,您基本上可以将它们与Spring数据JPA以及特定的范围联系起来(因为版本之间可能会有差异)。如果您使用SpringDataJPA2.x来构建它,那么它肯定无法与版本1.x一起工作(因为您使用的类不存在、具有不同的契约或移动到不同的包)。