父项目就是一个project,子项目就是module模块。
在新建每个父工程/子工程的时候,需要给每个工程打开maven的Lifecycle(maven生命周期)先点击clean,然后点击install(安装至本地库)
(1)New -> Project ->选择Maven创建(不需要勾选原型Create from archetype) (2)【重点***】在新建每个父工程/子工程的时候,需要给每个工程打开maven的Lifecycle先点击clean,然后点击install,然后就会打包成jar包,其他模块就能使用 然后就会将项目打包成jar包 控制台输出了install安装至本地库的路径 通过路径查看本地仓库:
(3)添加父项目需要的依赖pom.xml 子工程继承父工程,能够用父工程的依赖包
<!-- 定义依赖的版本号 --> <properties> <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> <maven.compiler.source>1.8</maven.compiler.source> <maven.compiler.target>1.8</maven.compiler.target> <junit.version>4.12</junit.version> <spring.version>5.2.9.RELEASE</spring.version> <pagehelper.version>5.1.8</pagehelper.version> <servlet-api.version>2.5</servlet-api.version> <dubbo.version>2.8.4</dubbo.version> <zookeeper.version>3.4.7</zookeeper.version> <zkclient.version>0.1</zkclient.version> <mybatis.version>3.4.5</mybatis.version> <mybatis.spring.version>1.3.1</mybatis.spring.version> <mybatis.paginator.version>1.2.15</mybatis.paginator.version> <mysql.version>5.1.32</mysql.version> <druid.version>1.0.9</druid.version> <commons-fileupload.version>1.3.1</commons-fileupload.version> <jackson.version>2.9.5</jackson.version> </properties> <!-- 定义依赖 --> <dependencies> <!-- Spring --> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-context</artifactId> <version>${spring.version}</version> </dependency> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-beans</artifactId> <version>${spring.version}</version> </dependency> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-webmvc</artifactId> <version>${spring.version}</version> </dependency> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-jdbc</artifactId> <version>${spring.version}</version> </dependency> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-aspects</artifactId> <version>${spring.version}</version> </dependency> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-context-support</artifactId> <version>${spring.version}</version> </dependency> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-test</artifactId> <version>${spring.version}</version> </dependency> <!-- Dubbo依赖包 --> <dependency> <groupId>javassist</groupId> <artifactId>javassist</artifactId> <version>3.11.0.GA</version> </dependency> <dependency> <groupId>commons-codec</groupId> <artifactId>commons-codec</artifactId> <version>1.10</version> </dependency> <!--web基础包 --> <dependency> <groupId>javax.servlet</groupId> <artifactId>servlet-api</artifactId> <version>2.5</version> <scope>provided</scope> </dependency> <dependency> <groupId>javax.servlet.jsp</groupId> <artifactId>jsp-api</artifactId> <version>2.0</version> <scope>provided</scope> </dependency> <dependency> <groupId>jstl</groupId> <artifactId>jstl</artifactId> <version>1.2</version> </dependency> <!-- Mybatis --> <dependency> <groupId>org.mybatis</groupId> <artifactId>mybatis</artifactId> <version>${mybatis.version}</version> </dependency> <dependency> <groupId>org.mybatis</groupId> <artifactId>mybatis-spring</artifactId> <version>${mybatis.spring.version}</version> </dependency> <!-- mybatis分页插件 --> <dependency> <groupId>com.github.miemiedev</groupId> <artifactId>mybatis-paginator</artifactId> <version>${mybatis.paginator.version}</version> </dependency> <dependency> <groupId>com.github.pagehelper</groupId> <artifactId>pagehelper</artifactId> <version>${pagehelper.version}</version> </dependency> <!-- MySql --> <dependency> <groupId>mysql</groupId> <artifactId>mysql-connector-java</artifactId> <version>${mysql.version}</version> </dependency> <!-- 连接池 --> <dependency> <groupId>com.alibaba</groupId> <artifactId>druid</artifactId> <version>${druid.version}</version> </dependency> <!-- 文件上传组件 --> <dependency> <groupId>commons-fileupload</groupId> <artifactId>commons-fileupload</artifactId> <version>${commons-fileupload.version}</version> </dependency> <!-- spring整合rabbitmq --> <dependency> <groupId>org.springframework.amqp</groupId> <artifactId>spring-rabbit</artifactId> <version>2.0.1.RELEASE</version> </dependency> <!-- xml解析器通用包:CXF WebService框架 --> <dependency> <groupId>org.apache.httpcomponents</groupId> <artifactId>httpcore</artifactId> <version>4.4.4</version> </dependency> <dependency> <groupId>org.apache.httpcomponents</groupId> <artifactId>httpclient</artifactId> <version>4.5.3</version> </dependency> <dependency> <groupId>dom4j</groupId> <artifactId>dom4j</artifactId> <version>1.6.1</version> </dependency> <dependency> <groupId>xml-apis</groupId> <artifactId>xml-apis</artifactId> <version>1.4.01</version> </dependency> <!--shiro--> <!--shiro和spring整合--> <dependency> <groupId>org.apache.shiro</groupId> <artifactId>shiro-spring</artifactId> <version>1.3.2</version> </dependency> <!--shiro核心包--> <dependency> <groupId>org.apache.shiro</groupId> <artifactId>shiro-core</artifactId> <version>1.3.2</version> </dependency> <!--测试--> <dependency> <groupId>junit</groupId> <artifactId>junit</artifactId> <version>4.12</version> <scope>test</scope> </dependency> <!-- jackson支持包 --> <dependency> <groupId>com.fasterxml.jackson.core</groupId> <artifactId>jackson-core</artifactId> <version>${jackson.version}</version> </dependency> <dependency> <groupId>com.fasterxml.jackson.core</groupId> <artifactId>jackson-annotations</artifactId> <version>${jackson.version}</version> </dependency> <dependency> <groupId>com.fasterxml.jackson.core</groupId> <artifactId>jackson-databind</artifactId> <version>${jackson.version}</version> </dependency> <!--日志包--> <dependency> <groupId>org.slf4j</groupId> <artifactId>slf4j-log4j12</artifactId> <version>1.7.25</version> </dependency> <dependency> <groupId>log4j</groupId> <artifactId>log4j</artifactId> <version>1.2.17</version> </dependency> </dependencies>子工程继承父工程的dependencies
相同方式再创建子工程export_dao和子工程export_system_service,记住一定要打开maven的Lifecycle先点击clean,然后点击install
需要选择模板maven-webapp,不然创建起来比较麻烦,用模板就算错了删掉重新创建就行 web子工程是打包为war包的<packaging>war</packaging>,因为tomcat只能运行war包,所以我们要打包成war包。
web子工程的pom.xml需要将不需要的全部删掉,最后的模板大概是这样的
<?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>export_parent</artifactId> <groupId>com.xgf</groupId> <version>1.0-SNAPSHOT</version> </parent> <modelVersion>4.0.0</modelVersion> <artifactId>export_web_manager</artifactId> <packaging>war</packaging> <name>export_web_manager Maven Webapp</name> <!-- FIXME change it to the project's website --> <url>http://www.example.com</url> </project>所谓的依赖关系大概是这么理解的:(父工程P) AB两个子工程,B子工程,依赖A子工程,那么B子工程就可以使用A子工程里面对的java类。 ABC三个子工程,B子工程依赖A子工程,C子工程依赖B子工程,那么C子工程既可以使用B子工程的java类,也可以使用A子工程的Java类。 ABC三个子工程,都继承父工程P,他们都能够使用父工程的jar包。
子工程依赖图
在子工程export_dao的pom.xml中加入依赖
<!-- 子工程继承父工程,可以使用父工程中的配置--> <!-- B子工程依赖A子工程,可以使用里面的A子工程java类--> <dependencies> <dependency> <artifactId>export_domain</artifactId> <groupId>com.xgf</groupId> <version>1.0-SNAPSHOT</version> </dependency> </dependencies>在子工程export_system_service的pom.xml中加入依赖
<dependencies> <dependency> <artifactId>export_dao</artifactId> <groupId>com.xgf</groupId> <version>1.0-SNAPSHOT</version> </dependency> </dependencies>在子工程export_web_manager的pom.xml中加入依赖
<!-- web层调用service层--> <dependencies> <dependency> <artifactId>export_system_service</artifactId> <groupId>com.xgf</groupId> <version>1.0-SNAPSHOT</version> </dependency> </dependencies>这样,你的环境就搭建完成了
