spring boot项目中,多模块结构的话,每个模块都会有一个pom.xml(当然,这是采用了maven来进行依赖管理)。这些pom.xml的关系和内容究竟为何?有必要搞搞清楚。
首先,关系很分明,就是父子关系。最外层的是父级,每个模块里的是子级。子级可以继承父级里的各种设置和依赖。比如说,有些包如果所有模块都会用,就不妨放到父级pom.xml里。
其次是pom里的内容。有些标记不能不了解一下。
1、modelVersion
这个标签必须存在,而且它的值必须是4.0.0,这标志着我们现在使用的是maven2。刚开始的时候,顾名思义,我想当然地认为这是一个模块版本(其实model也不是模块的意思)。
2、groupId和artifactId
groupId和artifactId合起来作为当前项目的唯一标识,maven2最终会根据这两个值,决定项目发布到repo上时所处的位置。
3、version
这个才是项目或模块的版本号
4、dependencyManagement
依赖声明,主要是版本。做法是,在父pom这里声明依赖包的版本,子pom就不用再声明版本了,这样做的好处是比较好修改。修改版本的话,只需修改父pom一个地方就够了。
示例:
//父pom
<properties>
<java.version>1.8</java.version>
<oracle.version>11.2.0.1.0</oracle.version>
<mybatis.version>2.1.0</mybatis.version>
<fastjson.version>1.2.60</fastjson.version>
</properties>
<!-- 依赖声明 -->
<dependencyManagement>
<dependencies>
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>fastjson</artifactId>
<version>${fastjson.version}</version>
</dependency>
<dependency>
<groupId>com.oracle</groupId>
<artifactId>ojdbc6</artifactId>
<version>${oracle.version}</version>
</dependency>
<dependency>
<groupId>org.mybatis.spring.boot</groupId>
<artifactId>mybatis-spring-boot-starter</artifactId>
<version>${mybatis.version}</version>
</dependency>
</dependencies>
</dependencyManagement>
//子pom,可以注意到没有声明版本号,都采用父pom上的版本;如果子pom声明了版本,则以子pom为准。
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-devtools</artifactId>
<optional>true</optional>
</dependency>
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>fastjson</artifactId>
</dependency>
<dependency>
<groupId>org.mybatis.spring.boot</groupId>
<artifactId>mybatis-spring-boot-starter</artifactId>
</dependency>
<dependency>
<groupId>com.oracle</groupId>
<artifactId>ojdbc6</artifactId>
</dependency>
5、properties
看上去,就是定义版本号,见上例。