后端项目搭建比较简单,我们使用maven构建一个父项目learn-project,然后构建两个module,一个叫platform-common,用于放置公共的一些类和配置;另一个叫platform-backend,用作是前端项目访问的后端接口;同时 platform-backend 会引用 platform-common。

这里搭建父-子项目的目的是为了项目的扩展性考虑的,后续在条件允许的情况项目,有可能我会再建微信公众号的module或者小程序的module,这些module都会引用这个common作为子包。

一、父项目搭建

启动idea:

后端项目全局依赖版本控制dependencies 后端 项目_xml

构建maven父项目:

后端项目全局依赖版本控制dependencies 后端 项目_xml_02

后端项目全局依赖版本控制dependencies 后端 项目_java_03

后端项目全局依赖版本控制dependencies 后端 项目_spring_04

由于是个父项目,不需要src相关的目录,为了让项目干净整洁,我们删除不用的文件。

后端项目全局依赖版本控制dependencies 后端 项目_xml_05

同样为了项目上传到git时,文件最小化,这里我们忽略掉打包的target目录,已经后面可能生成的log目录等:

后端项目全局依赖版本控制dependencies 后端 项目_maven_06

修改项目的README.md的说明文件,说明项目的相关情况、技术栈、资料等:

后端项目全局依赖版本控制dependencies 后端 项目_spring_07

二、构建子项目:project-backend

这个项目用于提供restful风格的接口,给前端调用。

右击项目名称,构建module:

后端项目全局依赖版本控制dependencies 后端 项目_spring_08

后端项目全局依赖版本控制dependencies 后端 项目_xml_09

后端项目全局依赖版本控制dependencies 后端 项目_maven_10

后端项目全局依赖版本控制dependencies 后端 项目_spring_11

后端项目全局依赖版本控制dependencies 后端 项目_xml_12

后端项目全局依赖版本控制dependencies 后端 项目_spring_13

三、构建子项目:project-common

和上面构建子项目类似。这里就不详细说了。

后端项目全局依赖版本控制dependencies 后端 项目_spring_14

最终项目结构如下:

后端项目全局依赖版本控制dependencies 后端 项目_xml_15

四、修改三个pom.xml文件

1、修改父项目learn-project的pom.xml文件。该文件主要是做整个项目会使用的jar包和插件的版本管理的。后续在子项目中用到的jar包和插件都是在这里定义版本号,子项目引用时就不用写版本了,这样可以保证整个项目使用的jar包的版本号的统一。这里我们使用spring-boot-1.5.8.RELEASE


<?xml version="1.0" encoding="UTF-8"?>
<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 http://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>

    <groupId>com.wuxiaolong</groupId>
    <artifactId>learn-project</artifactId>
    <version>1.0-SNAPSHOT</version>
    <!--父项目的打包方式是pom-->
    <packaging>pom</packaging>

    <modules>
        <module>platform-backend</module>
        <module>platform-common</module>
    </modules>

    <!--引入Spring boot 父项目-->
    <parent>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-parent</artifactId>
        <version>1.5.8.RELEASE</version>
    </parent>

    <!--配置整个项目的编码和jdk版本-->
    <properties>
        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
        <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
    </properties>

    <!--
    注意这个标签:dependencyManagement  作用是在父pom中管理使用的包及软件的版本,并不是在父项目中引入这些包;
    后续在子项目中需要使用这里的包时,就不用在添加版本号了
    -->
    <dependencyManagement>
        <dependencies>
            <!--本项目包 project.version是个内部变量,这里的值是learn-project这个项目的版本号,使用变量的目的是可以动态引用-->
            <dependency>
                <groupId>com.wuxiaolong</groupId>
                <artifactId>platform-common</artifactId>
                <version>${project.version}</version>
            </dependency>
            <dependency>
                <groupId>com.wuxiaolong</groupId>
                <artifactId>platform-common</artifactId>
                <version>${project.version}</version>
            </dependency>
        </dependencies>
    </dependencyManagement>

    <!--打包项目时用的配置-->
    <build>
        <!--pluginManagement标签有点类似上面的dependencyManagement,是用来做插件版本管理的,并不是引入-->
        <pluginManagement>
            <plugins>
                <plugin>
                    <groupId>org.springframework.boot</groupId>
                    <artifactId>spring-boot-maven-plugin</artifactId>
                    <version>2.0.2.RELEASE</version>
                </plugin>
            </plugins>
        </pluginManagement>

        <!--引入父项目要使用的插件-->
        <plugins>
            <plugin>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-maven-plugin</artifactId>
            </plugin>
        </plugins>
    </build>

</project>


2、修改子 项目project-common的pom.xml文件

子项目project-common的pom.xml文件主要是用来引用父项目中定义的最常用的一些jar包,后续其他项目也会用到这些最常用的jar包时,不用每个子项目都引用一遍,其他的子项目只需要引用project-common打出来的jar包即可。


<?xml version="1.0" encoding="UTF-8"?>
<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 http://maven.apache.org/xsd/maven-4.0.0.xsd">
    <parent>
        <artifactId>learn-project</artifactId>
        <groupId>com.wuxiaolong</groupId>
        <version>1.0-SNAPSHOT</version>
    </parent>
    <modelVersion>4.0.0</modelVersion>
    <artifactId>platform-common</artifactId>


    <!--
    当前个子项目会用到的一来包,这里的包不用写版本号,
    一是因为当前项目是Springboot项目,在父pom中的parent标签已经指定了Springboot的版本,所有项目中用到的Springboot相关的包都不用写版本号
    二是因为父pom中的dependencyManagement标签定义了需要使用的包的版本,这里直接引用就好了,也不用写版本,后续会继续在这里添加常用的jar包
    -->
    <dependencies>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-devtools</artifactId>
            <optional>true</optional>
            <scope>test</scope>
        </dependency>


    </dependencies>

    <!--子项目插件-->
    <build>
        <plugins>
            <plugin>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-maven-plugin</artifactId>
                <!--在多模块工程下,在父工程下执行的插件默认会在其所有的子模块上也执行一遍,大多数情况下这是合理的。像打包只需要父项目执行就行了,子项目就不用打包了-->
                <configuration>
                    <skip>true</skip>
                </configuration>
            </plugin>
        </plugins>
    </build>

</project>


3、修改子项目project-backend的pom文件

子项目project-backend会引用一些常用的jar包,通过第二步的操作,我们只要引用project-common即可。


<?xml version="1.0" encoding="UTF-8"?>
<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 http://maven.apache.org/xsd/maven-4.0.0.xsd">
    <parent>
        <artifactId>learn-project</artifactId>
        <groupId>com.wuxiaolong</groupId>
        <version>1.0-SNAPSHOT</version>
    </parent>
    <modelVersion>4.0.0</modelVersion>
    <artifactId>platform-backend</artifactId>

    <dependencies>
        <!--自己的common-->
        <dependency>
            <groupId>com.wuxiaolong</groupId>
            <artifactId>platform-common</artifactId>
            <version>1.0-SNAPSHOT</version>
        </dependency>

    </dependencies>

    <build>
        <plugins>
            <plugin>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-maven-plugin</artifactId>
                <configuration>
                    <skip>true</skip>
                </configuration>
            </plugin>
        </plugins>
    </build>

</project>


4、通过maven的打包命令检验pom文件是否有问题

执行 mvn clean install将项目打包并发布到本地的maven仓库(也可以使用idea右侧的可视化界面点击install)

后端项目全局依赖版本控制dependencies 后端 项目_spring_16

执行后看到如下的显示就说明pom文件配置成功:

后端项目全局依赖版本控制dependencies 后端 项目_javaee_17