我在弹簧靴中了解了一些东西,并使用了一个非常简单的代码片段,例如将其添加到pom.xml
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.2.1.RELEASE</version>
</parent>
据我所知,<parent>
在这种情况下意味着在我的pom.xml中,我们有一个父pom.xml(为spring-boot-starter-parent
看到了pom.xml文件),它将具有依赖项列表。
重要的是它只是pom包装,而不是真正的jar /二进制文件(如果我错了,请更正)
我在mvn存储库中看到了以下内容:
<!-- https://mvnrepository.com/artifact/org.springframework.boot/spring-boot-starter-parent -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.2.1.RELEASE</version>
<type>pom</type>
</dependency>
我的疑问是:
我们如何将其包含为依赖项,它只是一个pom包装(而不是真正的jar / war),它充当了存放常见依赖项的中心位置?可以吗我尝试添加项目,但是在STS IDE中看到错误。
如何下载?我们可以看到这个“父母”的内容吗?
答案 0 :(得分:2)
首先,在这种情况下,您可能错过了parent pom的含义。
任何特定版本(在本例中为2.2.1)的春季启动都带有许多技术/库的可能集成。因此,它提供了可使用的“默认”库版本,因为很难检查它是否与所有库的所有可能版本兼容。您当然可以提供自己的版本,但是随后您应该测试作为应用程序维护者的兼容性。
因此,如果您检出spring-boot-starter-parent pom的source code,您会发现它提供了一些插件和插件管理,更重要的是,它继承自另一个名为spring-boot-dependencies的pom
请注意它不会向您的项目添加任何依赖项。它仅定义了dependencyManagement
节。这意味着一旦您将在项目中使用该项目(从此pom继承)的依赖关系,就不必指定版本,只需指定组ID和工件ID。
同样,这是因为默认情况下,Spring Boot提供了非常特定的第三方版本-经验证与...兼容的版本。
现在,对于问题的第二部分-确实像在您发布的那样将依赖项包含在包装的pom中是没有意义的,请提供一个您确实看到过的链接吗?
有时候人们在他们的项目中采用spring boot时,他们已经有了一些父对象,因此他们不能使用继承,在这种情况下,他们可以使用非常特殊的maven范围“ import”,并使用对pom的依赖来处理它作为BOM(物料清单)-坦率地说,这是Maven中非常先进的东西。但是在这些情况下,Spring Boot会使用此功能。
依赖项包含如下:
<dependencies>
...
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-dependencies</artifactId>
<version>2.2.1.RELEASE</version>
<type>pom</type>
<scope>import</scope>
</dependency>
</dependencies>
注意,`导入行。从maven的站点中:旨在允许从远程POM文件中检索依赖管理信息,例如版本和排除项。
Here是有关此主题的教程
答案 1 :(得分:1)
@CuriousMind,包括spring-boot-starter-parent
作为依赖项,就像试图实例化Java中的接口或抽象类。如您所见,它的包装是pom,这意味着它只是一个Maven工件,可以帮助您配置maven项目。 Jar and War将包含一些Java二进制文件。我认为MVN储存库代码会自动生成所有样本作为依赖项。