分模块开发【自用

1 . 将java下的一个包(如pojo)单独提取出来成为一个模块,在新建模块的Java下建立pojo包,包下设置原本的pojo类。

2 . 分离出去的pojo模块仍遵循webapp和Java resource格式,pom文件内不添加任何依赖和插件以及打包方式,仅将

                  

<groupId>com.misakimei</groupId>

                  <artifactId>SSM_02_pojo</artifactId>

                  <version>1.0-SNAPSHOT</version>

三个信息保存,并在需要这个pojo的模块的pom内添加依赖如下:

<dependency>

                              <groupId>com.misakimei</groupId>

                              <artifactId>SSM_02_pojo</artifactId>

                              <version>1.0-SNAPSHOT</version>

                    </dependency>

但是,仅仅是如此,编译阶段无法通过,因为这个新建的依赖不在本地仓库内,所以在左栏的maven里寻找需要导入的那个pojo类所在的maven,在Lifecycle内使用install将他加载到本地仓库内

这样,需要依赖这个pojo运行的模块就能正常执行了

关于依赖的版本:

1 . SNAPSHOT   快照版本(常见于将自己的一个模块导入另一个模块,也表示这个版本并非正式版,还在不停的更新迭代)

2 . RELEASE   发行版本(稳定版本)

依赖相关:

依赖的优先级:

依赖的层级越浅,优先度越高

相同层级,配置靠前的依赖覆盖配置靠后的依赖

同级配置了相同依赖的不同版本,先配置的覆盖后配置的

可选依赖:

在依赖内配置<optional>true</optional>标签,这个依赖就将被隐藏起来,当另一个工程引入了这个工程的依赖时,这个optional标注的依赖将不可见,不被传递

排除依赖:

适用于当一个工程导入了另一个工程的依赖时,另一个工程内有一个新工程不需要的依赖(比如,传入这个依赖会导致依赖冲突,造成问题 ),想要排除这个依赖,就需要设置排除依赖

<dependency>

                              <groupId>com.misakimei</groupId>

                              <artifactId>SSM_02_pojo</artifactId>

                              <version>1.0-SNAPSHOT</version>

<exclusions>

                                        <exclusion>

                                                  <groupId>log4j</groupId>

                                                  <artifactId>log4j</artifactId>

                                        </exclusion>

                              </exclusions>

                    </dependency>

如上配置两层exclusion标签,将需要排除的依赖的简名写入,这样这个依赖就不会被导入了

聚合与继承:

总结:

两者区别:聚合在父模块内配置关系,进行构建管理;继承在子模块内配置关系,进行配置管理【可劲儿给我谜语人,我就是他妈没听懂】

聚合:

使用前提:

当多个模块共存时,使用  聚合  可以对项目进行快速构建(方便修改,同时开发)

配置方法:

1 . 新建一个模块(这个工程不具备业务功能),pom内打包方式package设置成pom包

2 . 设置管理的模块名称:(新建module双层标签),module标签内添加需要加入聚合的模块名(../模块名这种格式)

例:

                                  <modules>

                    <module>../SSM_01</module>

                                          <module>../SSM_01_exception</module>

                                            <module>../SSM_01_pojo</module>

                                  </modules>

         (这样,这几个模块就纳入这个父模块管理了,可以做到同时开发了)

继承:

使用前提:

当多个模块都需要引入一些相同的依赖时,设置父模块

配置方法:

1 . 设置父模块(方式如上)【这个工程不具备业务功能】

1 . 在需要继承父模块的子模块内添加parent标签,内置父模块的groupId,artifactId,version(这样,父模块的dependence内的依赖就全部继承到这个子模块中了)

relationPath属性:

指定父模块以及其需要继承的pom文件

例:(继承SSM_00_parent这个父模块)

<parent>

                                            <groupId>com.misakimei</groupId>

                                            <artifactId>SSM_00_parent</artifactId>

                                            <version>1.0-SNAPSHOT</version>

                                            <relativePath>../SSM_00_parent/pom.xml</relativePath>

                                  </parent>

版本控制与依赖管理器设置(dependencyManagement):

父模块设置后,在其中设置依赖管理器【示例一】,管理器负责 依赖 的版本控制

注:{

管理器内的依赖既不会出现在父模块内,也不会出现在继承了父模块的子模块内(右栏查看)

需要使用里面依赖的模块要单独配置这个依赖【示例二】,但是不能配置这个依赖的版本,这样,版本只在依赖管理器内配置,版本统一就做到了

}

示例一:    依赖管理器添加junit依赖:

<dependencyManagement>

                                                    <dependencies>

                                                              <dependency>

                                                                       <groupId>junit</groupId>

                                                                       <artifactId>junit</artifactId>

                                                                        <version>4.13.2</version>

                                                                        <scope>test</scope>

                                                              </dependency>

                                                   </dependencies>

                                          </dependencyManagement>

示例二:    子模块内需要使用junit依赖时,子模块的pom内需要添加的依赖示例:(去除了version,达成了版本统一)

<dependency>

                                                      <groupId>junit</groupId>

                                                      <artifactId>junit</artifactId>

                                                     <scope>test</scope>

                                            </dependency>

属性:

总结:

1 . 属性的配置方便了统一修改

2 . 在开发中,可以将所有的依赖的版本都定义成属性,然后以属性的形式配置,这样方便查看

使用前提:

当形如使用三个org.springframework下的依赖,同时使用多次同一个版本时,如果要进行版本修改,逐个修改容易出错

这种情况下,使用  属性  ,将三个相同的version配置成一个属性,这样只需要修改这个属性就可以一次性修改这三个依赖的版本了

配置方法:

设置properties标签,内置自定义名称的属性标签,标签内设置这个标签对应的值

示例:

<properties>

                                    <spring.version>5.2.10.RELEASE</spring.version>

                          </properties>

像这样,spring.version就赋予了值  5.2.10.RELEASE

当需要使用这个属性时,使用    ${自定义的属性标签名}    即可

示例:

<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-test</artifactId>

                                      <version>${spring.version}</version>

                            </dependency>

对.properties配置文件(如:jdbc.properties)内的值的属性定义:

1 . 如上在pom内配置properties标签,自定义对应的属性标签

<properties>

                                    <jdbc.driver>com.mysql.jdbc.Driver</jdbc.driver>

                                    <jdbc.url>jdbc:mysql://localhost:3306/ssm_db</jdbc.url>

                                    <jdbc.username>root</jdbc.username>

                                    <jdbc.password>794613852</jdbc.password>

                          </properties>

2 . 在.properties配置文件内使用   ${自定义标签名}   的形式使用配置好的属性

3 . 像这样配置,目前是无法正常运行的,因为这样配置的属性使用范围仅限pom文件内,所以需要设置过滤器,让指定目录下文件的  ${ }  格式可以被解析,这样就可以正常运行了

1 . 在build插件栏内,配置双重resource标签

2 . 内置标签directory,中间填写${}可解析的路径,   模块名/src/main/resources

如果需要将所有模块下的properties文件都纳入${}的使用范围,可以将项目名改成  ${project.basedir}  project.basedir是maven自定义的系统属性                                    

示例:

<resources>

                                                      <resource>

<!--<directory>SSM_01/src/main/resources</directory>-->

<directory>${project.basedir}/src/main/resources</directory>

                                                                <filtering>true</filtering>

                                                      </resource>

                                            </resources>

多环境开发:

使用前提:

开发时会有不同的开发环境,每一个环境的  jdbc.url  是不一样的,所以要配置多开发环境

使用方法:

1 . 配置双重profiles标签,定义多环境,每一个profile对应一个环境,一般配置三个环境:开发环境,生产环境,测试环境

2 . 在每一个环境内添加id标签,具有唯一性

3 . 添加properties标签,声明这个环境所对应的  jdbc.url属性   ,当需要将一个环境设置为默认时,添加activation标签,内置activeByDefault标签,内填true

  <profiles>

                                    <profile>

                                              <id>env_dep</id>

                                              <properties>

                                                            <jdbc.url>jdbc:mysql://127.0.0.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>

因没有web.xml文件,install时报错:

错误:webxml attribute is required (or pre-existing WEB-INF/web.xml if executing in update mode)

解决方法:配置属性<failOnMissingWebXml>false</failOnMissingWebXml>,这样就跳过了这个报错(另一种解决方案就是添加上web.xml文件)【还有一种类似的用插件配置的方式】

  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

MisakiMei释光

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值