后端项目搭建比较简单,我们使用maven构建一个父项目learn-project,然后构建两个module,一个叫platform-common,用于放置公共的一些类和配置;另一个叫platform-backend,用作是前端项目访问的后端接口;同时 platform-backend 会引用 platform-common。
这里搭建父-子项目的目的是为了项目的扩展性考虑的,后续在条件允许的情况项目,有可能我会再建微信公众号的module或者小程序的module,这些module都会引用这个common作为子包。
一、父项目搭建
启动idea:
构建maven父项目:
由于是个父项目,不需要src相关的目录,为了让项目干净整洁,我们删除不用的文件。
同样为了项目上传到git时,文件最小化,这里我们忽略掉打包的target目录,已经后面可能生成的log目录等:
修改项目的README.md的说明文件,说明项目的相关情况、技术栈、资料等:
二、构建子项目:project-backend
这个项目用于提供restful风格的接口,给前端调用。
右击项目名称,构建module:
三、构建子项目:project-common
和上面构建子项目类似。这里就不详细说了。
最终项目结构如下:
四、修改三个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)
执行后看到如下的显示就说明pom文件配置成功: