今天试了下搭建聚合工程,有几个误区,算是小失误,先贴上项目结构树:
这是大体项目结构:
其中common相当于spring-boot项目中的工具类
manager是系统的父工程,order-parent是整个聚合工程的父工程
pojo是java普通类相当于普通项目中的entity、domain
mapper依赖于pojo、service依赖于mapper、web依赖于service,这三个可以看成普通项目中的mapper、service、controller
再说打包,聚合工程就是pom,这里面order-parent与order-manager是pom父工程,所有的模块依赖于parent,pojo、mapper、service、webyi依赖于manager,manager依赖于common工具类mapper、pojo、service打包打成jar包,个人理解就是导入jar,web打成war包就行了
前面说pojo、mapper、service、web之间的依赖关系体现在pom文件中,如图:
然后具体每个模块要放些什么依赖根据平时大家搭建项目的爱好来,比如拿mapper来说,我的mapper里面放些mybatis、mysql、连接池之类的东西
<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>
<parent>
<groupId>com.order</groupId>
<artifactId>order-manager</artifactId>
<version>0.0.1-SNAPSHOT</version>
</parent>
<artifactId>order-manager-mapper</artifactId>
<!-- 依赖管理 -->
<dependencies>
<dependency>
<groupId>com.order</groupId>
<artifactId>order-manager-pojo</artifactId>
<version>0.0.1-SNAPSHOT</version>
</dependency>
<!-- Mybatis -->
<dependency>
<groupId>org.mybatis</groupId>
<artifactId>mybatis</artifactId>
</dependency>
<dependency>
<groupId>org.mybatis</groupId>
<artifactId>mybatis-spring</artifactId>
</dependency>
<dependency>
<groupId>com.github.miemiedev</groupId>
<artifactId>mybatis-paginator</artifactId>
</dependency>
<!-- 分页 -->
<dependency>
<groupId>com.github.pagehelper</groupId>
<artifactId>pagehelper</artifactId>
</dependency>
<!-- MySql -->
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
</dependency>
<!-- 连接池 -->
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>druid</artifactId>
</dependency>
</dependencies>
<!-- 如果不添加此节点mybatis的mapper.xml文件都会被漏掉。 -->
<build>
<resources>
<resource>
<directory>src/main/java</directory>
<includes>
<include>**/*.properties</include>
<include>**/*.xml</include>
</includes>
<filtering>false</filtering>
</resource>
</resources>
</build>
</project>
pojo的pom文件:
<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>
<parent>
<groupId>com.order</groupId>
<artifactId>order-manager</artifactId>
<version>0.0.1-SNAPSHOT</version>
</parent>
<artifactId>order-manager-pojo</artifactId>
</project>
service的pom文件
<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>
<parent>
<groupId>com.order</groupId>
<artifactId>order-manager</artifactId>
<version>0.0.1-SNAPSHOT</version>
</parent>
<artifactId>order-manager-service</artifactId>
<dependencies>
<dependency>
<groupId>com.order</groupId>
<artifactId>order-manager-mapper</artifactId>
<version>0.0.1-SNAPSHOT</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-context</artifactId>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-beans</artifactId>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-webmvc</artifactId>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-jdbc</artifactId>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-aspects</artifactId>
</dependency>
</dependencies>
</project>
web的pom文件:
<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>
<parent>
<groupId>com.order</groupId>
<artifactId>order-manager</artifactId>
<version>0.0.1-SNAPSHOT</version>
</parent>
<artifactId>order-manager-web</artifactId>
<packaging>war</packaging>
<!-- 依赖管理 -->
<dependencies>
<dependency>
<groupId>com.order</groupId>
<artifactId>order-manager-service</artifactId>
<version>0.0.1-SNAPSHOT</version>
</dependency>
<!-- JSP相关 -->
<dependency>
<groupId>jstl</groupId>
<artifactId>jstl</artifactId>
</dependency>
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>servlet-api</artifactId>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>jsp-api</artifactId>
<scope>provided</scope>
</dependency>
<!-- 文件上传组件 -->
<dependency>
<groupId>commons-fileupload</groupId>
<artifactId>commons-fileupload</artifactId>
</dependency>
</dependencies>
</project>
我们运行项目要在manager上run,因此在这里贴上manager的pom,里面有tomcat的插件配置、我也找了下官网上并没有tomcat8的插件,但是有个人配的tomcat,有想玩的可以去找一下:
<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>
<parent>
<groupId>com.order</groupId>
<artifactId>order-parent</artifactId>
<version>0.0.1-SNAPSHOT</version>
</parent>
<groupId>com.order</groupId>
<artifactId>order-manager</artifactId>
<version>0.0.1-SNAPSHOT</version>
<packaging>pom</packaging>
<dependencies>
<dependency>
<groupId>com.order</groupId>
<artifactId>order-common</artifactId>
<version>0.0.1-SNAPSHOT</version>
</dependency>
</dependencies>
<modules>
<module>order-manager-pojo</module>
<module>order-manager-mapper</module>
<module>order-manager-service</module>
<module>order-manager-web</module>
</modules>
<build>
<plugins>
<!-- 配置Tomcat插件 -->
<plugin>
<groupId>org.apache.tomcat.maven</groupId>
<artifactId>tomcat7-maven-plugin</artifactId>
<configuration>
<port>8080</port>
<path>/</path>
</configuration>
</plugin>
</plugins>
</build>
</project>
这里可以看到
mapper、pojo、service、web依赖于manager,在创建这四个模块的时候选择
然后在order-manager里面就会出现同样的目录、删了任何一个另外一个也会消失
表现层可以创建webapp-WEBINF-web.xml和index.jsp、index.html
完了可以在index写一个东西,比如:配置成功
在这之前需要install一下父工程,将他们放在本地maven仓库上,有两个父工程哦!!!
然后在manager上run as →maven build 在Goals一栏输入:clean Tomcat7:run,到这里出现这样就成功搭建了一个微服务聚合工程项目