带有 org.springframework.cloud 和 spring-boot-starter-parent 的自定义父 pom
Posted
技术标签:
【中文标题】带有 org.springframework.cloud 和 spring-boot-starter-parent 的自定义父 pom【英文标题】:custom parent pom with org.springframework.cloud and spring-boot-starter-parent 【发布时间】:2018-07-18 01:59:39 【问题描述】:我有几个 Spring Cloud 项目,并希望将所有常见的依赖项也放入我自己的父 pom 中。许多示例展示了如何使用<dependencyManagement>
进行操作。但在我使用 spring-boot-starter-parent 和 org.springframework.cloud 的情况下,它似乎无法使用依赖管理,因为父级已经成为“spring-boot-starter-parent”并且依赖管理也有 org.springframework.cloud。以下是我的 Spring Cloud 项目的 pom 文件之一。
<groupId>com.demo</groupId>
<artifactId>demo-customer-service</artifactId>
<version>0.0.1-SNAPSHOT</version>
<packaging>jar</packaging>
<name>demo-customer-service</name>
<description>Demo project for Spring Boot</description>
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>1.5.9.RELEASE</version>
<relativePath />
</parent>
<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
<java.version>1.8</java.version>
</properties>
<dependencyManagement>
<dependencies>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-dependencies</artifactId>
<version>Dalston.RELEASE</version>
<type>pom</type>
<scope>import</scope>
</dependency>
</dependencies>
</dependencyManagement>
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-actuator</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
如上,有两个parent:org.springframework.boot starter parent和cloud。那么我怎样才能拥有自己的父母呢?
有什么建议请教父和子 pom 文件应该是怎样的?
【问题讨论】:
“那我怎么能有自己的父母呢?”是什么意思 @miroh 。我的意思是,一个父 pom 文件,其中包括 org.springframework.cloud 、 org.springframework.boot 依赖项以及其他项目特定的依赖项,例如 apache commons、数据库依赖项。因为这些依赖项对所有子项目都是通用的。结果,我将能够删除上面 pom 中定义的版本。 您在问题中提供的 pom 可以是父母。如果您删除依赖项部分(如果您不删除它,它仍然可能是父项)。 @miroh。感谢关注。那么2个问题:1.我的父母也有自己的父母吗?我只是要求更清楚一点:这是一个好习惯吗? 2. 为什么要删除依赖?因为这些依赖项对于许多子项目都是通用的。 【参考方案1】:您提供的 pom 完全可以成为父 pom。父母 poms 也可以有父母自己。它是常用的,如果你检查你在 github 上使用的项目,它们有父链。
例如 spring-cloud-build-dependencies
有 spring-boot-dependencies
作为父级。 spring-boot-dependencies
有 spring-boot-build
作为父级。
在你的父 pom 中,<dependencies></dependencies>
中定义的依赖项将被添加到你父级的所有子级中。如果您的所有孩子都在使用这些依赖项,您可以将它们添加到此标签中。 (我这里一般会添加单元测试依赖,但你可以添加任何东西)
父 pom 通常位于 childs pom.xml 上方的一个文件夹。 (但<relativePath>
如果在别处也可以用)
|-父 pom.xml |-子项目文件夹 |--child pom.xml
【讨论】:
非常感谢 miroh 的回答和解释。以上是关于带有 org.springframework.cloud 和 spring-boot-starter-parent 的自定义父 pom的主要内容,如果未能解决你的问题,请参考以下文章
带有多个链接的 NSAttributedString 的 UILabel,带有行限制,显示尾部截断,带有未见文本的 NSBackgroundColorAttributeName