将多个springboot项目的pom.xml文件整合

将多个springboot项目的pom.xml文件整合

0.0、前因

​ 刚入公司敲代码时、发现一个项目中会包含多个子项目、每个子项目会代表一个功能模块、这属实是把我这个菜鸟惊叹到了。而这种分而治之的方式也引申出一个问题:各子项目的依赖如何统一管理?

​ 我们知道、每个项目都会导入特定依赖、每个依赖又有若干版本、如果在这个项目使用这个版本、那个项目使用那个版本、是很容易造成混乱和版本冲突的。因此可将依赖分为父子关系。即一个父依赖管理若干个子依赖。

直接上代码:

父依赖:


<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">
    
    <modelVersion>4.0.0modelVersion>
    
    <parent>
        <groupId>org.springframework.bootgroupId>
        <artifactId>spring-boot-starter-parentartifactId>
        <version>2.6.11version>
        <relativePath/> 
    parent>
    
    <groupId>com.hcgx-rootgroupId>
    <artifactId>hcgx-rootartifactId>
    <version>0.0.1-SNAPSHOTversion>
    
    <packaging>pompackaging>

    <modules>
        <module>hcgx-servicemodule>
    modules>

    <properties>
        <java.version>1.8java.version>
        <mysql-connector.version>8.0.20mysql-connector.version>
        <maven-compiler-plugin.version>3.8.1maven-compiler-plugin.version>
    properties>

    <dependencyManagement>
        <dependencies>
            
            <dependency>
                <groupId>mysqlgroupId>
                <artifactId>mysql-connector-javaartifactId>
                <version>${mysql-connector.version}version>
            dependency>
        dependencies>
    dependencyManagement>


    <dependencies>
        <dependency>
            <groupId>org.springframework.bootgroupId>
            <artifactId>spring-boot-starterartifactId>
        dependency>
        <dependency>
            <groupId>org.springframework.bootgroupId>
            <artifactId>spring-boot-starter-testartifactId>
            <scope>testscope>
        dependency>
    dependencies>

    <build>
        <plugins>
            <plugin>
                <groupId>org.apache.maven.pluginsgroupId>
                <artifactId>maven-compiler-pluginartifactId>
                <version>${maven-compiler-plugin.version}version>
                <configuration>
                    <source>1.8source>
                    <target>1.8target>
                    <encoding>UTF-8encoding>
                configuration>
            plugin>
            <plugin>
                <groupId>org.springframework.bootgroupId>
                <artifactId>spring-boot-maven-pluginartifactId>
            plugin>
        plugins>
    build>

project>

1、这玩意是啥?

首先:parent 意思可以理解为继承、整体意思是此xml会继承spring-boot-starter-parent文件中所有的依赖、相当于继承父依赖。而且这玩意是每一个springboot初始化时都存在的、它是springboot自动帮我们配置的。为的就是省略我们在创建sping项目时一些共有依赖

<parent>
    <groupId>org.springframework.bootgroupId>
    <artifactId>spring-boot-starter-parentartifactId>
    <version>2.6.11version>
    <relativePath/> 
parent>

2、表示maven版本、必须填4.0.0才能使用多maven项目整合

 <modelVersion>4.0.0modelVersion>

3、此xml文件的名称、后面与子项目关联时是用到

<groupId>com.hcgx-rootgroupId>
<artifactId>hcgx-rootartifactId>
<version>0.0.1-SNAPSHOTversion>

4、打包方式、默认会打包成 jar、因为父项目只是用来统筹子项目的依赖所以设置为pom,表示不动它。

每一个pom.xml文件都代表一个maven项目、需要结合此文件将项目打成jar包、而将程序打成jar包的目的是因为项目中有java代码且这些代码需要用到这些依赖、而父项目中已经将 src 目录删除了、不考虑其内的子项目、那么是没有理由需要被打成jar包(子项目自己有pom.xml文件把自己打成 jar 包)

 <packaging>pompackaging>

5、用来关联子项目名称、hcgx-service就是子项目的名称(属实是双向奔赴)

<modules>
    <module>hcgx-servicemodule>
modules>

6、此标签内管理依赖版本、mysql-connector.version是自定义的标签,使用时${mysql-connector.version}来使用对应标签下的版本号(注:版本号一定是真实存在的不然使用自定义标签时会爆红)

<properties>
    <java.version>1.8java.version>
    <mysql-connector.version>8.0.20mysql-connector.version>
    <maven-compiler-plugin.version>3.8.1maven-compiler-plugin.version>
properties>

7、dependencyManagement 标签表示模板、正常情况下直接使用 dependencies(即最外层没有dependencyManagement),表示导入此依赖、而dependencyManagement标签只是作为一个依赖模板、 ${mysql-connector.version}存储这个依赖模板的版本号,后面子项目直接使用:

<dependency>
	<groupId>mysqlgroupId>
	<artifactId>mysql-connector-javaartifactId>
dependency>

就可以导入依赖,且不需要指定依赖版本。

<dependencyManagement>
        <dependencies>
            
            <dependency>
                <groupId>mysqlgroupId>
                <artifactId>mysql-connector-javaartifactId>
                <version>${mysql-connector.version}version>
            dependency>
        dependencies>
    dependencyManagement>

8、dependencies 在父项目中导入的依赖会被所有子项目默认导入

    <dependencies>
        <dependency>
            <groupId>org.springframework.bootgroupId>
            <artifactId>spring-boot-starterartifactId>
        dependency>
        <dependency>
            <groupId>org.springframework.bootgroupId>
            <artifactId>spring-boot-starter-testartifactId>
            <scope>testscope>
        dependency>
    dependencies>

子项目:


<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0modelVersion>

    <parent>
        <groupId>com.hcgx-rootgroupId>
        <artifactId>hcgx-rootartifactId>
        <version>0.0.1-SNAPSHOTversion>
    parent>

    <groupId>com.hcgx-servicegroupId>
    <artifactId>hcgx-serviceartifactId>
    <version>0.0.1-SNAPSHOTversion>
    <name>hcgx-servicename>
    <description>Demo project for Spring Bootdescription>

    <properties>
        <java.version>1.8java.version>
    properties>

    <dependencies>
        <dependency>
            <groupId>org.springframework.bootgroupId>
            <artifactId>spring-boot-starter-jdbcartifactId>
        dependency>
        <dependency>
            <groupId>org.springframework.bootgroupId>
            <artifactId>spring-boot-starter-webartifactId>
        dependency>
        <dependency>
            <groupId>mysqlgroupId>
            <artifactId>mysql-connector-javaartifactId>
        dependency>
    dependencies>

    <build>
        <plugins>
            <plugin>
                <groupId>org.apache.maven.pluginsgroupId>
                <artifactId>maven-compiler-pluginartifactId>
                <version>${maven-compiler-plugin.version}version>
                <configuration>
                    <source>1.8source>
                    <target>1.8target>
                    <encoding>UTF-8encoding>
                configuration>
            plugin>
            <plugin>
                <groupId>org.springframework.bootgroupId>
                <artifactId>spring-boot-maven-pluginartifactId>
            plugin>
        plugins>
    build>

project>

1、parent 标签里面是用来描述需要继承的对象、即使用此标签后我们会继承 groupIdcom.hcgx-rootartifactIdhcgx-root 的父项目,这个内容其实在上面步骤 3 里。

<parent>
    <groupId>com.hcgx-rootgroupId>
    <artifactId>hcgx-rootartifactId>
    <version>0.0.1-SNAPSHOTversion>
parent>

2、自己的名称等等

<groupId>com.hcgx-servicegroupId>
<artifactId>hcgx-serviceartifactId>
<version>0.0.1-SNAPSHOTversion>
<name>hcgx-servicename>
<description>Demo project for Spring Bootdescription>

3、不用指定版本号,父项目指定了

<dependencies>
    <dependency>
        <groupId>org.springframework.bootgroupId>
        <artifactId>spring-boot-starter-jdbcartifactId>
    dependency>
    <dependency>
        <groupId>org.springframework.bootgroupId>
        <artifactId>spring-boot-starter-webartifactId>
    dependency>
    <dependency>
        <groupId>mysqlgroupId>
        <artifactId>mysql-connector-javaartifactId>
    dependency>
dependencies>

0.1、文件目录

将多个springboot项目的pom.xml文件整合_第1张图片

你可能感兴趣的:(java,spring,boot,java,spring)