1、分模块开发与设计(看代码或视频)
将与自己相关的放到一起成为一个模块,无关的删掉,相关资源,使用坐标导入(相关资源先install到本地仓库才行),spring配置文件不同模块要拆分。web配置文件需要将拆分的spring配置文件都写上(拆分成了两个,用applicationContext-*.xml)
2、模块聚合(防止某一模块更新,导致其他模块不能使用。用一个模块管理所有模块,要更新或者其他啥操作,都一起操作。实现快速构建)
创建一个模块,只有pom文件,在pom文件中加
<!--定义该工程用于进行构建管理-->
<packaging>pom</packaging>
<!--管理的工程列表-->
<modules>
<!--具体的工程名称-->
<module>../ssm_pojo</module>
<module>../ssm_dao</module>
<module>../ssm_service</module>
<module>../ssm_controller</module>
</modules>
3、模块继承(解决模块依赖出现的问题,比如两个模块依赖的资源版本不同。用一个模块做总控,确定依赖的版本,其他模块只写相应的依赖,不写版本),插件和自己写的模块作为依赖也可以进行管理
下面的就是中间加上所有依赖,来控制版本。
插件:同理
创建一个模块(就是上面的那个,成为父工程,其他模块称为子工程),只有pom文件,在父工程pom文件中加:
<!--声明此处进行依赖管理-->
<dependencyManagement>
<!--自己的模块作为依赖也可以进行管理,俺就不弄了-->
<!--具体的依赖-->
<dependencies>
<!--mybatis环境-->
<dependency>
<groupId>org.mybatis</groupId>
<artifactId>mybatis</artifactId>
<version>3.5.3</version>
</dependency>
<!--mysql环境-->
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>5.1.47</version>
</dependency>
<!--spring整合jdbc-->
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-jdbc</artifactId>
<version>5.1.9.RELEASE</version>
</dependency>
<!--spring整合mybatis-->
<dependency>
<groupId>org.mybatis</groupId>
<artifactId>mybatis-spring</artifactId>
<version>2.0.3</version>
</dependency>
<!--druid连接池-->
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>druid</artifactId>
<version>1.1.16</version>
</dependency>
<!--分页插件坐标-->
<dependency>
<groupId>com.github.pagehelper</groupId>
<artifactId>pagehelper</artifactId>
<version>5.1.2</version>
</dependency>
<!--springmvc的坐标-->
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-webmvc</artifactId>
<version>5.1.9.RELEASE</version>
</dependency>
<!--jackson-->
<dependency>
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-databind</artifactId>
<version>2.9.0</version>
</dependency>
<!--servlet4.0.1规范的坐标-->
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>javax.servlet-api</artifactId>
<version>3.1.0</version>
<scope>provided</scope>
</dependency>
<!--junit单元测试-->
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.12</version>
</dependency>
<!--spring整合junit-->
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-test</artifactId>
<version>5.1.9.RELEASE</version>
</dependency>
<!--spring坐标-->
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-context</artifactId>
<version>5.1.9.RELEASE</version>
</dependency>
</dependencies>
</dependencyManagement>
<!--构建-->
<build>
<!--设置插件-->
<plugins>
<!--具体的插件配置-->
<plugin>
<groupId>org.apache.tomcat.maven</groupId>
<artifactId>tomcat7-maven-plugin</artifactId>
<version>2.1</version>
<configuration>
<port>80</port>
<path>/</path>
</configuration>
</plugin>
</plugins>
</build>
所有的子工程的pom文件都要加
<!--定义该工程的父工程-->
<parent>
<groupId>com.lcl</groupId>
<artifactId>ssm</artifactId>
<version>1.0-SNAPSHOT</version>
<!--填写父工程的pom文件位置-->
<relativePath>../ssm/pom.xml</relativePath>
</parent>
然后字工程中的依赖和插件的版本都可以不写了,继承父工程。
还有就是:按理说,子工程的groupId、version应该与父工程一样,可以删除。我这里就不删了
4、属性:为了实现父工程的依赖【版本统一】,相当于定义个变量,值是版本号
属性类别:
(1)自定义属性:
在父工程pom文件中
<!--定义属性-->
<properties>
<spring.version>5.1.9.RELEASE</spring.version>
<junit.version>4.12</junit.version>
</properties>
依赖中,使用${属性名}
注意:1、之所以使用spring作为名字,是为了与spring相关的都可以使用这个版本。2、自己模块的依赖的版本号,可以不定义属性进行统一,直接${version}即可,代表着和父工程一样的版本1.0-SNAPSHOT
(2)内置属性:例如上面的${version},是Maven的内置属性,可以快速配置
(3)Setting属性:使用Maven配置文件setting,xml中的标签属性,用于动态配置,例如${setting.属性}
(4)Java系统属性
(5)环境变量属性
(4)、(5)要使用的话,win+r,cmd,键入mvn help:system
5、版本管理
工程版本:
1、SNAPSHOT(快照版本):临时版本,测试阶段版本,随着开发进度不断更新
2、RELEASE(发布版本):稳定的版本
工程版本号约定
约定规范:<主版本>.<次版本>.<增量版本>.<里程碑版本>
主版本:表示项目重大架构的变更,如:spring5相较于spring4的迭代
次版本:表示有较大的功能增加和变化,或者全面系统地修复漏洞
增量版本:表示有重大漏洞的修复
里程碑版本:表明一个版本的里程碑(版本内部)。这样的版本同下一个正式版本相比,相对来说不是很稳定,有待更多的测试。
6、资源配置-资源加载属性值
例如拿JDBC的配置文件中的jdbc.url,可以读取父工程的pom文件的属性值
1)在定义属性那里定义属性值
<jdbc.url>jdbc:mysql://192.168.23.129:3306/ssm_db?useSSL=false</jdbc.url>
2)
还需要在<build></build>中加
<!--配置资源文件对应的信息-->
<resources>
<resource>
<directory>${project.basedir}/src/main/resources</directory>
<filtering>true</filtering>
</resource>
</resources>
<!--配置【测试】资源文件对应的信息-->
<testResources>
<testResource>
<directory>${project.basedir}/src/test/resources</directory>
<filtering>true</filtering>
</testResource>
</testResources>
来表示你的资源文件参与这种形式的使用
3)jdbc那个配置文件中也是使用${属性名}
7、环境配置-多环境配置
<!--右上角那个编辑运行,运行install时 -P 加对应的id,如pro_env,就可以指定对应的环境-->
<!--要是嫌弃上面的麻烦,可以设置一个环境默认启动,直接点Lifecycle中的install即可-->
<!--创建多环境-->
<profiles>
<!--定义具体的环境:生产环境-->
<profile>
<!--定义环境的唯一名称-->
<id>pro_env</id>
<!--定义环境专用的属性值-->
<properties>
<jdbc.url>jdbc:mysql://127.1.1.1:3306/ssm_db?useSSL=false</jdbc.url>
</properties>
<!--设置默认启动-->
<activation>
<activeByDefault>true</activeByDefault>
</activation>
</profile>
<!--定义具体的环境:开发环境-->
<profile>
<id>dep_env</id>
<properties>
<jdbc.url>jdbc:mysql://127.2.2.2:3306/ssm_db?useSSL=false</jdbc.url>
</properties>
</profile>
</profiles>
8、跳过测试(了解,实际开发不允许)
方法一:右侧Maven中的Lifecycle有个蓝色圆圈小闪电,点一下,test就会失效
方法二:pom文件处右击Run Maven,键入install -D skipTests(不知道为啥,我没有Run Maven)
方法三:在插件那里加
<!--跳过测试插件的使用-->
<plugin>
<groupId>org.apache.maven</groupId>
<artifactId>maven-surefire-plugin</artifactId>
<version>2.22.1</version>
<configuration>
<skipTests>true</skipTests>
</configuration>
</plugin>
中间可以使用include或exclude来包含或不包含指定的用例测试
9、私服
Nexus:
1)、启动:到到nexus运行文件目录下(我这个在D:\nexus\nexus-3.19.1-01\bin),在上面的路径改成cmd回车进入命令行,键入nexus /run nexus
2)、访问(默认端口号:8081):http://localhost:8081
3)、修改基础配置信息:在etc目录下nexus-default.properties文件中保存有nexus基础配置信息,例如默认端口号
4)、修改服务器运行配置信息:在bin目录下nexus.vmoptions文件保存有nexus服务器启动对应的配置信息,例如默认占用内存空间
仓库分类:
1)宿主仓库hosted:保存无法从中央仓库获取的资源(自主研发,第三方非开源项目)
2)代理仓库proxy:代理远程仓库,通过nexus访问其他公共仓库,例如中央仓库
3)仓库组group:将若干个仓库组成一个群组,简化配置。仓库组不能保存资源,属于设计型仓库。
手动上传看视频吧,挺简单的
idea环境资源的上传与下载,idea和本地仓库打交道,本地仓库和私服打交道,本地仓库和私服之间需要用户名和密码(配置在本地仓库),以及下载(配置到本地仓库)上传(配置到工程中)的位置地址
用户名和密码(配置在本地仓库):maven的setting.xml中
里面
lcl-release
admin
admin
lcl-snapshots
admin
admin
下载(配置到本地仓库):maven的setting.xml中里面
nexus-lcl
*
http://localhost:8081/repository/maven-public/
上传(配置到工程中):父工程的pom文件中加
<!--上传到私服的发布配置管理-->
<distributionManagement>
<repository>
<id>lcl-release</id>
<url>http://localhost:8081/repository/lcl-release/</url>
</repository>
<snapshotRepository>
<id>lcl-snapshots</id>
<url>http://localhost:8081/repository/lcl-snapshots/</url>
</snapshotRepository>
</distributionManagement>
点击右侧Maven中的Lifecycle中的deploy