我在spring中理解了一些东西,并且使用了一个非常简单的代码片段,比如在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中看到了错误。
怎么下载的?我们能看看这个“家长”的内容吗?
发布于 2019-11-29 21:04:04
首先,在这种情况下,您可能忽略了父级pom的含义。
任何特定版本(本例中为2.2.1)的Spring引导都附带了许多技术/库的可能集成。因此,它提供了要使用的库的“默认”版本,因为很难检查它是否与所有库的所有可能版本兼容。当然,您可以提供自己的版本,但是应该测试作为应用程序维护者的兼容性。
因此,如果您将签出春启动启动器父pom的源代码,您将看到它提供了一些插件和插件管理,更重要的是从另一个名为spring-启动依赖项的pom继承。
注意,它没有向项目添加任何依赖项。它只定义了一个dependencyManagement节。这意味着,一旦您从这个pom中使用了项目中的依赖项(继承),您就不必指定版本,只需指定组id和工件id。同样,这是因为spring引导默认提供非常特定的第三方版本--该版本已被验证与.
至于问题的第二部分--实际上,像你已经发布的那样,在打包pom中包含依赖关系是没有意义的,你能提供一个链接吗?你看过这个链接吗?
有时候,当人们在他们的项目中采用spring引导时,他们已经有了一些父级,所以他们不能使用继承,在这种情况下,他们可以使用一个非常特殊的maven作用域"import“,并使用对pom的依赖,将它作为BOM (物料清单)来处理--坦白地说,maven中有一个相当高级的东西。但是spring在这些情况下使用了这个特性。
依赖项包含如下所示:
<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文件中检索依赖关系管理信息(如版本),并将其排除在外。
这里是关于这个主题的教程。
发布于 2019-11-29 20:35:14
@CuriousMind,包括作为依赖项的spring-boot-starter-parent,就像试图在Java中实例化接口或抽象类一样。正如您注意到的,它的打包是pom,这意味着它只是一个帮助配置maven项目的maven工件。Jar和War将包含一些java二进制文件。我认为MVN存储库代码会自动生成所有样本作为依赖项。
https://stackoverflow.com/questions/59110606
复制相似问题