Project,项目,也叫作工程。web
父子工程中,子模块会自动继承父工程的资源、依赖,但子模块之间是独立的,不能直接访问彼此中的资源、类。apache
就是说咱们能够把多个子模块都要用的资源、依赖提出来,放到父工程中,注意微服务的每一个服务都是独立的,不能这么干。tomcat
子模块会继承父工程的依赖,但并非全部继承下来的依赖都有效、还能在子模块中使用。mybatis
做用域是provided、test的依赖,继承下来都是无效的,须要在子模块的pom.xml中从新导入。maven
有时候咱们要使用本项目其它子模块中的类,或者使用其它项目的某个模块中的类。ide
常见的状况是:把某个模块打包为jar,安装到公司私服,供公司内部使用。微服务
不能直接使用其它子模块中的类,须要先把要使用的子模块打包为jar,安装到仓库,而后在要用的子模块的pom.xml中引入依赖。编码
好比我要在service子模块中使用dao子模块:spa
(1)对dao子模块中的install双击,打包为jar,安装到仓库插件
(2)在service子模块的pom.xml中导入依赖:
<dependency> <groupId>org.example</groupId> <artifactId>dao</artifactId> <version>1.0</version> </dependency>
对应dao模块的公司|组织名、模块名、版本号。
在父工程的pom.xml中添加tomcat插件
<plugin> <groupId>org.apache.tomcat.maven</groupId> <artifactId>tomcat7-maven-plugin</artifactId> <version>2.2</version> <!--配置tomcat的端口号、将工程映射到哪一个路径(域名后面的工程名)、uri编码字符集--> <configuration> <port>8080</port> <path>/ssm</path> <uriEncoding>UTF-8</uriEncoding> </configuration> </plugin>
tomcat插件启动方式一:
若是没有出现tomcat7,刷新一下、从新导入。
tomcat插件启动方式二:
无需在pom.xml中配置tomcat插件。
公司每每要在父工程的pom.xml中统一项目的jar包版本,但若是在子模块的pom.xml中导入了同名、不一样版本的jar包,会覆盖父工程传递的同名依赖。
为防止这种问题,须要在父工程的pom.xml中锁定jar包版本。
<!--jar包锁定--> <dependencyManagement> <dependencies> <dependency></dependency> <dependency></dependency> <dependency></dependency> </dependencies> </dependencyManagement> <!--依赖--> <dependencies> <dependency></dependency> <dependency></dependency> <dependency></dependency> </dependencies>
就是把<dependencies>拷贝一下放到<dependencyManagement>中。锁定以后,若是子模块中出现同名的依赖,以父工程传递的依赖(锁定的依赖)为准。
须要注意的是<dependencyManagement>只有锁定jar包的功能,不会导入jar包。
<!--统一管理jar包版本--> <properties> <!--元素名即key,随意取但尽可能见名知义,经过${key}来引用--> <mybatis.version>3.5.4</mybatis.version> </properties> <!--jar包锁定--> <dependencyManagement> <dependencies> <dependency> <groupId>org.mybatis</groupId> <artifactId>mybatis</artifactId> <version>${mybatis.version}</version> </dependency> </dependencies> </dependencyManagement> <!--依赖--> <dependencies> <dependency> <groupId>org.mybatis</groupId> <artifactId>mybatis</artifactId> <version>${mybatis.version}</version> </dependency> </dependencies>
把版本都写在<properties>中,使用${ }引用便可,这样维护起来方便。