Loading

add spring-boot modules to maven project

spring boot 项目中 多modules parent 冲突

如果一个maven project 建立多modules ,pom文件应该是这样:

cn.ifengkou
spring-cloud-test
pom
1.0-SNAPSHOT


spring-boot-test
spring-cloud-config

module 的pom文件应该是这样:


spring-cloud-test
cn.ifengkou
1.0-SNAPSHOT

spring-boot-test

大家在一开始学spring-boot时,都应该看过 官网的quick start项目,里面pom文件也有一个parent


org.springframework.boot
spring-boot-starter-parent
1.5.2.RELEASE

这样,modules 项目中的 要继承父项目,而spring boot 又要继承spring-boot-starter-parent,一个pom文件不能存在两个parent,这个问题怎么解决呢?

网上提供了一种方式,通过在子module 的parent 中,加 ../pom.xml 节点,实现父项目依赖管理的继承。但这种方式违背了按需加载依赖的理念,并不可取

project(parent) pom


org.springframework.boot
spring-boot-starter-parent
1.3.3.RELEASE


dao

module pom


parent
com.luyh.projectv1
1.0-SNAPSHOT
../pom.xml

其实spring-boot-starter-parent 只是一种快速开始spring boot 的方式,没必要非要用它,它所做的只是提供依赖管理和plugin管理(dependency management and plugin management),我们也可以自己做这些,当然如果想省事,spring 也提供了 spring-boot-dependencies 这个依赖(等价于 parent) 去管理依赖项,要实现同样的效果,你只需要用 scope=import, 像下面例子:




org.springframework.boot
spring-boot-dependencies
${spring.boot.version}
pom
import


完整pom.xml,或者查看githubspring-cloud-test

project(parent) pom



4.0.0

cn.ifengkou
spring-cloud-test
pom
1.0-SNAPSHOT


spring-boot-test
spring-cloud-config


<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
<java.version>1.8</java.version>
<maven.compiler.source>1.8</maven.compiler.source>
<maven.compiler.target>1.8</maven.compiler.target>

<spring.boot.version>1.5.2.RELEASE</spring.boot.version>




org.springframework.boot
spring-boot-dependencies
${spring.boot.version}
pom
import



module pom




spring-cloud-test
cn.ifengkou
1.0-SNAPSHOT

4.0.0

spring-boot-test


org.springframework.boot
spring-boot-starter-web


posted @ 2017-04-14 18:24  sloong  阅读(1403)  评论(0)    收藏  举报