分模块开发和设计
其实,分模块和设计就是将功能更细分化成一个模块,比如dao层,单独分离出来。一个模块只做他对应的功能,其余的模块统统不做。
依赖管理
暂且,求参照这个图,没啥好管理的。
1.对于我们能拿到里面的依赖。(我们不想别人用我这个依赖)
关闭依赖传递性
<!-- 关闭依赖传递性,也就是说直接依赖和间接依赖不起作用了-->
<!--默认是false,开启依赖 -->
<optional>true</optional>
2.对于我们拿不到里面的依赖。(第三方的依赖)
排除依赖,排除了这个依赖的某个依赖。这对象相当于,我们使用某个地方依赖时,但是不需要指定版本号。
<dependency>
<groupId>com.itheima</groupId>
<artifactId>maven_04_dao</artifactId>
<version>1.0-SNAPSHOT</version>
<!--排除依赖是隐藏当前资源对应的依赖关系-->
<exclusions>
<exclusion>
<groupId>org.mybatis</groupId>
<artifactId>mybatis</artifactId>
</exclusion>
</exclusions>
继承与聚合
聚合
假如,我们pojo模块更新,但是crm和order等模块还依赖这pojo没更新的资源,那么我们编译其他模块会报错,但是编译pojo能通过,所以我们用聚合,就相当于更新编写pojo也会报错了。
<!--打包方式,pom-->
<packaging>pom</packaging>
<!--<!–设置管理的模块名称,相对路径–>-->
<modules>
<module>../maven_02_ssm</module>
<module>../maven_03_pojo</module>
<module>../maven_04_dao</module>
</modules>
先放置一个pom.xml,设置要管理的模块名称,打包方式为pom。
构建时,优先构建没有依赖的的依赖。
继承
写父工程,就是为了做统一的管理。把好几模块复用的抽出来,封装到一起。
继承父模块的依赖坐标,是继承!其实那些都是只能继承的,我们也可以用依赖管理设置默认不继承,子模块要想用,自己加,但是不要写版本。
这是在子模块中要继承的坐标
<!--配置当前工程继承自parent工程的pom.xml坐标-->
<parent>
<!-- 父模块的坐标 -->
<groupId>com.itheima</groupId>
<artifactId>maven_01_parent</artifactId>
<version>1.0-RELEASE</version>
<!-- 父模块的相对路径 -->
<relativePath>../maven_01_parent/pom.xml</relativePath>
</parent>
父模块要管理的坐标(dependencyManagement
标签是进行依赖版本锁定,但是并没有导入对应的依赖;如果我们工程需要那个依赖只需要引入依赖的 groupid
和 artifactId
不需要定义 version
。 )
<!--定义依赖管理-->
<dependencyManagement>
<dependencies>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.12</version>
<scope>test</scope>
</dependency>
</dependencies>
</dependencyManagement>
属性
就是,你看就算提高代码复用性了,还有一个缺点?是不是,我们那么多的坐标,版本号是不是要兼容,但是我们因为某个版本更新了,项目经理觉得他比较好,改了,但是后来发现不好,但是以内坐标太多找不到,那么是不是既我们要把所有模块的坐标版本号,集中起来统一管理。
就tm是个变量,占位符。
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-webmvc</artifactId>
<version>${spring.version}</version>
<!--变量区域,就是占位符-->
</dependency>
<!--定义属性-->
<properties>
<spring.version>5.2.10.RELEASE</spring.version>
<junit.version>4.12</junit.version>
<mybatis-spring.version>1.3.0</mybatis-spring.version>
<!--<jdbc.url>jdbc:mysql://127.0.0.1:3306/ssm_db</jdbc.url>-->
</properties>
资源文件(properties)引用属性(将配置文件,也交给pom.xml来管理)
版本管理
第一个快照版本(不稳定版),第二个稳定版。
多环境开发
就是把你要用的属性,再给tm的分组话,比如下属开发环境一组自定义属性,生产环境一组自定义属性。
<!--配置多环境-->
<profiles>
<!--开发环境-->
<profile>
<id>env_dep</id>
<properties>
<jdbc.url>jdbc:mysql://127.1.1.1:3306/ssm_db</jdbc.url>
</properties>
<!--设定是否为默认启动环境-->
<activation>
<activeByDefault>true</activeByDefault>
</activation>
</profile>
<!--生产环境-->
<profile>
<id>env_pro</id>
<properties>
<jdbc.url>jdbc:mysql://127.2.2.2:3306/ssm_db</jdbc.url>
</properties>
</profile>
<!--测试环境-->
<profile>
<id>env_test</id>
<properties>
<jdbc.url>jdbc:mysql://127.3.3.3:3306/ssm_db</jdbc.url>
</properties>
</profile>
</profiles>
2.通过点击这个,mvn install(maven执行) -P env_dep,运行该项目。
跳过测试
<plugins>
<plugin>
<artifactId>maven-surefire-plugin</artifactId>
<version>2.12.4</version>
<configuration>
<!--true,排除这个不参与test测试-->
<skipTests>false</skipTests>
<!--排除掉不参与测试的内容-->
<excludes>
<exclude>**/BookServiceTest.java</exclude>
</excludes>
</configuration>
</plugin>
</plugins>
Maven私服
无所叼为了,以后实际开发中采用。