分模块开发对工程有什么好处?
一个完整的工程依据什么来进行模块的拆分?
注意事项:
mvn install
本地仓库有该模块包
注意事项:
环境搭建参考:springMVC02-SSM整合
页面以及代码文件直接复制粘贴然后修改下即可,不需要手写, 先准备好这些文件,(分模块创建的过程要自己做)
链接:https://pan.baidu.com/s/1ugCV7BRWleeaQC0mTejY1w
提取码:2xrg
代码在:maven_plus/code目录下
再创建maven_ssm 框架整合模块 (专门写一系列的配置文件的)
创建目录结构如下:
pom.xml先不管 直接根据参考博客里的全部复制过来
<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/maven-v4_0_0.xsd">
<modelVersion>4.0.0modelVersion>
<groupId>cn.whugroupId>
<artifactId>maven_ssmartifactId>
<packaging>jarpackaging>
<version>1.0-SNAPSHOTversion>
<dependencies>
<dependency>
<groupId>org.springframeworkgroupId>
<artifactId>spring-webmvcartifactId>
<version>5.2.10.RELEASEversion>
dependency>
<dependency>
<groupId>org.springframeworkgroupId>
<artifactId>spring-jdbcartifactId>
<version>5.2.10.RELEASEversion>
dependency>
<dependency>
<groupId>org.springframeworkgroupId>
<artifactId>spring-testartifactId>
<version>5.2.10.RELEASEversion>
dependency>
<dependency>
<groupId>org.mybatisgroupId>
<artifactId>mybatisartifactId>
<version>3.5.6version>
dependency>
<dependency>
<groupId>org.mybatisgroupId>
<artifactId>mybatis-springartifactId>
<version>1.3.0version>
dependency>
<dependency>
<groupId>mysqlgroupId>
<artifactId>mysql-connector-javaartifactId>
<version>5.1.47version>
dependency>
<dependency>
<groupId>com.alibabagroupId>
<artifactId>druidartifactId>
<version>1.1.16version>
dependency>
<dependency>
<groupId>junitgroupId>
<artifactId>junitartifactId>
<version>4.12version>
<scope>testscope>
dependency>
<dependency>
<groupId>javax.servletgroupId>
<artifactId>javax.servlet-apiartifactId>
<version>3.1.0version>
<scope>providedscope>
dependency>
<dependency>
<groupId>com.fasterxml.jackson.coregroupId>
<artifactId>jackson-databindartifactId>
<version>2.9.0version>
dependency>
<build>
<plugins>
<plugin>
<groupId>org.apache.tomcat.mavengroupId>
<artifactId>tomcat7-maven-pluginartifactId>
<version>2.1version>
<configuration>
<port>80port>
<path>/path>
configuration>
plugin>
plugins>
build>
project>
然后直接根据模版创建各种配置文件
(以下文件全部创建(复制)完毕才不会报错)
jdbc.properties
JdbcConfig
MybatisConfig
ServletContainersInitConfig
SpringMvcConfig
SpringConfig
创建maven_pojo模块
删除多余的目录,创建需要的目录
pom.xml里加入lombok即可
(打包方式改成jar 或者不写默认jar)
<dependencies>
<dependency>
<groupId>org.projectlombokgroupId>
<artifactId>lombokartifactId>
<version>1.18.26version>
dependency>
dependencies>
创建maven_dao模块
删除多余的(webapp目录),然后加上BookDao模块
pom.xml 先引入需要的包,现在初学,保证不报错就OK了
(直接导入maven_ssm 省时省力)
(打包方式改成jar 或者不写默认jar)
<dependencies>
<dependency>
<groupId>cn.whugroupId>
<artifactId>maven_ssmartifactId>
<version>1.0-SNAPSHOTversion>
dependency>
<dependency>
<groupId>cn.whugroupId>
<artifactId>maven_pojoartifactId>
<version>1.0-SNAPSHOTversion>
dependency>
dependencies>
现在写BookDao,就不会报错了:
public interface BookDao {
@Insert("insert into tbl_book (type,name,description) values(#{type},#{name},#{description})")
public int save(Book book);
@Update("update tbl_book set type = #{type}, name = #{name}, description = #{description} where id = #{id}")
public int update(Book book);
@Delete("delete from tbl_book where id = #{id}")
public int delete(Integer id);
@Select("select * from tbl_book where id = #{id}")
public Book getById(Integer id);
@Select("select * from tbl_book")
public List<Book> getAll();
}
打包到本地仓库,service模块要用
创建maven_service模块
删除多余的,加上service
pom.xml:
(打包方式改成jar 或者不写默认jar)
<dependencies>
<dependency>
<groupId>cn.whugroupId>
<artifactId>maven_daoartifactId>
<version>1.0-SNAPSHOTversion>
dependency>
dependencies>
打包失败,后面再学习如何解决;现在保证不报错就行
pom.xml直接引入maven_service即可
<dependencies>
<dependency>
<groupId>cn.whu</groupId>
<artifactId>maven_service</artifactId>
<version>1.0-SNAPSHOT</version>
</dependency>
</dependencies>
看看引用结构就知道了
BookController
Code
ProjectExceptionAdvice
Result
BusinessException
SystemException
可能有不合理之处,但好歹人家不报错了~
测试执行
controller的pom.xml里加入tomcat7插件
<build>
<plugins>
<plugin>
<groupId>org.apache.tomcat.mavengroupId>
<artifactId>tomcat7-maven-pluginartifactId>
<version>2.1version>
<configuration>
<port>80port>
<path>/path>
configuration>
plugin>
plugins>
build>
启动服务器,直接访问:http://localhost/pages/books.html
注意:
路径千万别写错了,想跳转webapp根目录下创建index.jsp然后写
<script>
location.href="pages/books.html"
</script>
新建index.html不行
除了Controller,其他所有工程打包方式改成jar 或者不写默认jar,因为要作为依赖给别的项目用
依赖管理指当前项目运行所需的jar,一个项目可以设置多个依赖
格式:
<dependencies>
<dependency>
<groupId>org.springframeworkgroupId>
<artifactId>spring-webmvcartifactId>
<version>5.2.10.RELEASEversion>
dependency>
dependencies>
A依赖B,B依赖C,A是否依赖于C呢?
A也依赖C,依赖具有传递性,而且可以重复不会特别冲突(后配置的会覆盖先配置的,版本之间差异较大可能冲突,springBoot自动版本管理,应该就很难出现这种问题了),所有直接依赖和间接依赖的总和为此项目的依赖全集
同一个pom.xml中也可以写同一个依赖不同版本,后写的覆盖先写的,后写的生效(如下:最终就是junit4.12生效)
相同层级:eg:3度资源两个里面分别依赖的junit4.11和junit4.12 这时看谁写在前面
其实也不需要记忆,最终到maven->Dependencies下面看,展示出来的是谁就用谁
IDEA有一个maven神器,直接可以看到依赖结构图 (ctrl+滚轮 可以放大)
A依赖B,B依赖C,如果B不想将C依赖传递给A,是否可以做到?
eg: 上图中 maven_controller依赖maven_service, maven_service依赖maven_dao
从而导致maven_controller间接依赖了maven_dao(从而依赖了后面的maven_ssm及其里面一系列jar)
下面在maven_service里将maven_dao隐藏起来,看看会发生什么
<dependency>
<groupId>cn.whugroupId>
<artifactId>maven_daoartifactId>
<version>1.0-SNAPSHOTversion>
<optional>trueoptional>
dependency>
再看maven_controller的依赖("资金链"断裂,好可怜,啥都没了)
原因在于maven_service不想别人知道我用了啥,他的maven_dao就不允许被传递了,maven_controller要用maven_dao怎么办?自己在pom.xml里写直接依赖呗,然后直接依赖要是出了问题就跟我maven_dao没关系了(要是从我这传递的,你可能还会找我麻烦)
A依赖B,B依赖C,如果A不想将C依赖进来,是否可以做到?
(这次不是B不想传递依赖,而是A嫌弃B用的依赖C太low了,或者跟我冲突了,总之就是A不想用B传递过来的依赖C,想主动丢弃C,(然后自己直接依赖自己想要的包替代C))
场景模拟:
maven_dao里引入了log4j和mybatis,间接依赖了lombok
<dependency>
<groupId>log4j</groupId>
<artifactId>log4j</artifactId>
<version>1.2.12</version>
</dependency>
<dependency>
<groupId>org.mybatis</groupId>
<artifactId>mybatis</artifactId>
<version>3.5.6</version>
</dependency>
maven_service引入了maven_dao,但是不想要他传递过来的这2+1个依赖,咋办?(更深层次间间接依赖的lombok也不想要)
问题解决:
<dependency>
<groupId>cn.whugroupId>
<artifactId>maven_daoartifactId>
<version>1.0-SNAPSHOTversion>
<exclusions>
<exclusion>
<groupId>log4jgroupId>
<artifactId>log4jartifactId>
exclusion>
<exclusion>
<groupId>org.mybatisgroupId>
<artifactId>mybatisartifactId>
exclusion>
<exclusion>
<groupId>org.projectlombokgroupId>
<artifactId>lombokartifactId>
exclusion>
exclusions>
dependency>
不想要的3个都没了
演示完毕,mybatis和lombok的排除要注释掉,否则整个项目都没有这两个包了,项目无法正常执行了。
除非(高层如)controller里面再自己直接依赖这两个包
什么叫聚合?
聚合:将多个模块组织成一个整体,同时进行项目构建的过程称为聚合
聚合工程:通常是一个不具有业务功能的”空“工程(有且仅有一个pom文件)
作用:使用聚合工程可以将多个工程编组,通过对聚合工程进行构建,实现对所包含的模块进行同步构建
3个项目都依赖pojo,万一pojo变了(eg: 删掉一个属性),其他模块都会出问题。如果4个模块都已经打好包了,难道改了一个,其余4个都要重新打包吗?好麻烦啊。
这个时候想到可不可以来一个管理的工程,一旦发现某一处更新了,管理工程就要求4个同时构建更新
管理工程称为:聚合工程
只需对聚合工程进行构建,其他(被管理的)工程都会跟着构建
工程的打包方式有哪几种?
pom.xml里修改打包方式为:pom
<packaging>pompackaging>
注意事项:
<modules>
<module>../maven_controllermodule>
<module>../maven_servicemodule>
<module>../maven_daomodule>
<module>../maven_pojomodule>
<module>../maven_ssmmodule>
modules>
刷新maven
编译聚合工程,会发现,所有6个工程模块全都一起跟着构建了
而且构建顺序跟配置顺序无关,完全根据依赖关系合理设置构建顺序的
.
同样,一点install,所有的模块都打包到本地仓库了)
(除controller要打war包外,parent要打pom包外,其他工程打包方式统统改成jar 或者不写默认jar, 因为要在本地仓库以jar的形式作为依赖而存在)
(前面service的pom里面除去了两个要用的包,把排除依赖注释掉,或者自己在controller的pom.xml里再直接依赖这两个包,就OK啦)
然后启动controller,浏览器还能访问,完美~
.
一点parent(root)项目的clean,在IDEA中全部项目的target都删除了
注意事项:
至此,再没有继承的情况下(完全靠依赖传递+聚合),跑通了web工程,备份一下项目,保留其复杂性,下面对比才能项目继承的好处太大了
链接:https://pan.baidu.com/s/1d1Hwi3xnF0lc0_Yx8vwcBA
提取码:5jsd
IntelliJ IDEA 2022.3.2 (Ultimate Edition)
什么叫继承?
终于到包的管理了,如何合理地写依赖关系?继承是最好的方式,大家都要用到的依赖统一写在父工程里,都直接继承自父工程,就不要一级一级依赖传递了,万一断链了咋办
.
不是传递依赖,而是直接继承到依赖,除了父工程不依赖其他工程了(继承的包似乎是直接依赖)
直接用上面的maven_parent模块做为父工程,聚合和继承通常都是做在一起的
<packaging>pompackaging>
注意事项:
然后其他所有子工程的pom里全部加上下面的配置:继承自父工程:
<parent>
<groupId>cn.whugroupId>
<artifactId>maven_parentartifactId>
<version>1.0-SNAPSHOTversion>
<relativePath>../maven_parent/pom.xmlrelativePath>
parent>
父工程导的包(包括依赖传递的包),子工程全部继承到了
因此所有的包都可以写在父工程了
公共的包直接写直接依赖,子工程继承后也是直接依赖 详见4.2
非所有项目公共的包写配置成可选依赖,子工程选择性地继承 详见4.3
接下来把maven_ssm的pom.xml中的依赖坐标全部剪切到父工程中去,公共的都在这里
maven_parent目前pom.xml
<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/maven-v4_0_0.xsd">
<modelVersion>4.0.0modelVersion>
<groupId>cn.whugroupId>
<artifactId>maven_parentartifactId>
<version>1.0-SNAPSHOTversion>
<packaging>pompackaging>
<modules>
<module>../maven_controllermodule>
<module>../maven_servicemodule>
<module>../maven_daomodule>
<module>../maven_pojomodule>
<module>../maven_ssmmodule>
modules>
<dependencies>
<dependency>
<groupId>org.springframeworkgroupId>
<artifactId>spring-webmvcartifactId>
<version>5.2.10.RELEASEversion>
dependency>
<dependency>
<groupId>org.projectlombokgroupId>
<artifactId>lombokartifactId>
<version>1.18.26version>
dependency>
dependencies>
project>
版本管理:父工程parent中修改一次版本,所有子工程中的版本就都跟着改了。一改全改,好方便
不公共的也可以写在父工程里,但是得用
配置成可选依赖
然后子工程需要的话,在里面写GA即可导入这些可选依赖(不需要写版本,父工程统一管理版本)
<dependencyManagement>
<dependencies>
<dependency>
<groupId>junitgroupId>
<artifactId>junitartifactId>
<version>4.13version>
<scope>testscope>
dependency>
<dependency>
<groupId>org.projectlombokgroupId>
<artifactId>lombokartifactId>
<version>1.18.26version>
dependency>
dependencies>
dependencyManagement>
junit只有service或者dao可能需要,配置成可选依赖
lombok只有pojo需要,配置成可选依赖
然后service里勾选junit可选依赖,pojo里勾选lombok可选依赖
pojo的pom.xml 引入父工程的可选依赖
<dependencies>
<dependency>
<groupId>org.projectlombokgroupId>
<artifactId>lombokartifactId>
dependency>
dependencies>
service的pom.xml 引入父工程的可选依赖
<dependency>
<groupId>junitgroupId>
<artifactId>junitartifactId>
<scope>testscope>
dependency>
不用写烦人的版本了,多好啊
注意事项:
聚合和继承的作用?
定义属性有什么好处?
看看这些spring下各类包的版本号,都一样,都是spring版本号,一个个都重复写,且都写死了,万一换个spring版本,一个个重复地改,多麻烦啊,万一有的改了,有的没改,那问题就大了。
能不能将版本号定义成变量,然后变量值维护为spring版本号呢?这样不就能一改全改了吗?
xml里的属性 简单理解为 java里的变量
<properties>
<spring.version>5.1.11.RELEASEspring.version>
<junit.version>4.12junit.version>
properties>
<dependency>
<groupId>org.springframeworkgroupId>
<artifactId>spring-webmvcartifactId>
<version>${spring.version}version>
dependency>
<dependency>
<groupId>org.springframeworkgroupId>
<artifactId>spring-jdbcartifactId>
<version>${spring.version}version>
dependency>
<dependency>
<groupId>org.springframeworkgroupId>
<artifactId>spring-testartifactId>
<version>${spring.version}version>
dependency>
<dependency>
<groupId>junitgroupId>
<artifactId>junitartifactId>
<version>${junit.version}version>
<scope>testscope>
dependency>
resources里也有配置(资源文件),如jdbc.properties
这些值也是写死的,虽然没必要,但是其实这些值也是可以放到pom.xml中维护的,然后资源文件以属性(变量)形式引用一下即可。
在maven_parent的pom.xml里面定义属性
属性文件在maven_controller的resources/jdbc.properties下,就在这里面写。看看效果
maven_parent的pom.xml 父工程里定义一份,所有子工程的pom.xml里就都有了
<properties>
<spring.version>5.1.11.RELEASEspring.version>
<junit.version>4.12junit.version>
<jdbc.driver>com.mysql.jdbc.Driverjdbc.driver>
<jdbc.url>jdbc:mysql://localhost:3306/ssm_db?useSSL=falsejdbc.url>
<jdbc.username>rootjdbc.username>
<jdbc.password>1234jdbc.password>
properties>
在maven_controller的pom.xml里随便哪里使用el表达式,看看有没有这些变量
果然,父工程pom里的配置被继承下来了
maven_controller的resources/jdbc.properties下
jdbc.driver=${jdbc.driver}
jdbc.url=${jdbc.url}
jdbc.username=${jdbc.username}
jdbc.password=${jdbc.password}
pom.xml中定义的属性,只能默认只能在pom.xml中使用,想要在其他文件中也能使用,得配置一下拓展范围路径
.
父工程里这么配置扫描路径:${project.basedir}/src/main/resources
子工程继承这行配置,于是所有工程的resources目录都会被扫描到了,不管jdbc.properties等资源文件在哪个工程下,都没问题了
<build>
<resources>
<resource>
<directory>${project.basedir}/src/main/resourcesdirectory>
<filtering>truefiltering>
resource>
resources>
build>
maven_parent下重新install,然后启动maven_controller服务器,再浏览器访问,能正常访问页面和功能,就OK啦~
或者打包maven_controller,然后解压maven_ssm-1.0-SNAPSHOT.jar,看看值有没有被解析出来
问题引入:
删掉maven_controller工程WEB-INF下面的web.xml,再对其进行package或者install打包,会报错
注解开发本来就不想要web.xml怎么办?
问题解决: 配置maven打war包时,忽略web.xml检查 在父工程的pom里配置 这样相当于给所有子项目的pom都加了这个配置(简化配置,这么来的,深刻体会到了)
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.pluginsgroupId>
<artifactId>maven-war-pluginartifactId>
<version>3.2.3version>
<configuration>
<failOnMissingWebXml>falsefailOnMissingWebXml>
configuration>
plugin>
plugins>
build>
再去install,不会报错啦
上面用到了
${project.basedir}
可以直接动态得到当前项目根目录名
怎么做到?maven的内置属性呗
项目开发的版本可以分为哪几种?
多环境配置有什么好处?
父工程 maven_parent 的pom.xml里写定义
<profiles>
<profile>
<id>env_depid>
<properties>
<jdbc.url>jdbc:mysql://127.1.1.1:3306/ssm_db?useSSL=falsejdbc.url>
<jdbc.password>1234jdbc.password>
properties>
<activation>
<activeByDefault>trueactiveByDefault>
activation>
profile>
<profile>
<id>env_proid>
<properties>
<jdbc.url>jdbc:mysql://127.2.2.2:3306/ssm_db?useSSL=falsejdbc.url>
<jdbc.password>1234jdbc.password>
properties>
profile>
<profile>
<id>env_testid>
<properties>
<jdbc.url>jdbc:mysql://127.3.3.3:3306/ssm_db?useSSL=falsejdbc.url>
<jdbc.password>1234jdbc.password>
properties>
profile>
profiles>
子工程会继承这些配置,maven_ssm的resources的jdbc.properties里面正好就是动态配置的属性
jdbc.driver=${jdbc.driver}
jdbc.url=${jdbc.url}
jdbc.username=${jdbc.username}
jdbc.password=${jdbc.password}
重新maven_parent下install所有工程,然后看maven_ssm-1.0-SNAPSHOT.jar解压后的jdbc.properties
果然变成激活环境里的属性了(可以切换激活环境,发现确实是动态变化的)
后面SpringBoot封装得更好,这里知道一点原理即可
【命令】:
mvn 指令 –P 环境定义id
【范例】:
mvn install –P pro_env
使用install指令时添加临时参数,可以指定按哪个环境(打包)安装项目
解压maven_ssm-1.0-SNAPSHOT.jar后,查看 jdbc.properties
跳过测试会不会影响项目的构建过程?
直接使用install等需要打包的指令时,会先帮你测试,测试通过才会继续打包,否则报错直接不打包
确实有想跳过测试直接打包的场景,该如何做呢?
注意事项:
直接点击也可跳过测试:
再点install,打包时就会跳过测试了。
上面点击一下,会使得所有项目打包都跳过测试,如何设定跳过某些(我们确实知道有问题,但是无关紧要)测试呢
父工程maven_parent的pom.xml下配置
<build>
<plugins>
<plugin>
<artifactId>maven-surefire-pluginartifactId>
<version>2.22.1version>
<configuration>
<skipTests>falseskipTests>
<includes>
<include>**/User*Test.javainclude>
includes>
<excludes>
<exclude>**/User*TestCase.javaexclude>
excludes>
configuration>
plugin>
plugins>
build>
:任意目录下的User*Test.java文件
这里的私服和平时我们听的国服、体验服、欧服等等有什么区别?
我们公司内部自己开发了一些模块,怎么交流?打包好U盘分享?大项目这么做肯定不行。放到中央仓库?红发才有的面子。只能自己公司内部搭建一个私服了,都把打好的jar包放到私服的仓库里,引用兄弟团队的jar,直接到私服仓库里下载。
团队开发现状分析
私服是一台独立的服务器,用于解决团队内部的资源共享与资源同步问题
Nexus
下拉,下载windows版本即可:
下载好的在这:
链接:https://pan.baidu.com/s/1tE8YPzMS5t_YJl43Ffoc4g
提取码:j1o6
和tomcat一样,解压即安装
解压后进入nexus-3.30.1-01/bin目录下,以命令行形式启动,因为要指定参数
启动服务器(命令行启动)
访问服务器(默认端口:8081)
修改基础配置信息
修改服务器运行配置信息
演示:
先进入nexus-3.30.1-01/bin目录下,打开命令行,输入指令: nexus.exe /run nexus
稍等片刻,启动成功:
再到浏览器端访问nexus服务器 http://localhost:8081/
人家的默认端口就是8081,和tomcat紧挨着,但是区分开了
默认用户名: admin
默认密码:指定文件下查
设置新密码
这里选择允许匿名访问
修改配置: 如修改默认端口
sonatype-work/nexus3/etc/nexus.properties 文件里可以改默认端口等配置
建议保持默认,不要改了~
所有的资源都直接找仓库组下,仓库组先帮你找到对应的仓库,然后去仓库里找包,找到直接给,找不到私服就去中央仓库下载,或者第三方地址去下载。总之:有了私服,不管什么包,我们就直接找私服就够了,剩下的操作私服帮你完成。
私服仓库分为哪几种?
宿主仓库的第三方资源指的是中央库中也没有的第三方资源。(eg: Oracel数据库连接包,非开源,中央仓库没有,得去Oracle官网下载)
仓库组里面有一个代理仓库和若干个宿主仓库
往私服上传资源是否需要身份认证?在哪里设置认证信息?
华东到最下方点击创建仓库
同样的操作再创建一个whu-release
一共创建了2个仓库
仓库id就是whu-release、whu-snapshot
【第一步】在maven的settings.xml中
本地仓库不去中央仓库(或者阿里云搭建的中央仓库)下载了,而是到我们的私服去下载(中间又多了一个中转)
<mirror>
<id>maven-publicid>
<mirrorOf>*mirrorOf>
<url>http://localhost:8081/repository/maven-public/url>
mirror>
【第二步】在nexus中设置允许匿名下载,如果不允许将不会从私服中下载依赖
如果私服中没有对应的jar,会去中央仓库下载,速度很慢。可以配置让私服去阿里云中下载依赖。
【第一步】配置本地仓库访问私服的权限(在maven的conf/settings.xml的servers标签中配置)
<server>
<id>heima-nexusid>
<username>adminusername>
<password>adminpassword>
server>
<server>
<id>whu-snapshotid>
<username>adminusername>
<password>adminpassword>
server>
【第二步】配置当前项目访问私服上传资源的保存位置((父)项目的pom.xml文件中配置)
<0distributionManagement>
<repository>
<id>whu-releaseid>
<url>http://localhost:8081/repository/whu-release/url>
repository>
<snapshotRepository>
<id>whu-snapshotid>
<url>http://localhost:8081/repository/whu-snapshot/url>
snapshotRepository>
distributionManagement>
现在pom.xml里有仓库地址,conf/settings.xml里有权限(用户名密码) [二者完全可以通过id联系上]
注意:要和maven的settings.xml中server中定义的
和
对应
【第三步】发布资源到私服命令
mvn deploy
然后刷新maven,再点击deploy (install是安装到本地仓库,deploy是发布到私服仓库)
不管点击哪一个,都会很漫长,因为私服仓库啥也没有,第一次就这么大的项目,一定会去下载大量jar包的
(实验室网快,点击deploy也才7s就下载好了)
这个时候再去whu-snapshot仓库看,就有我们发布的东西了
将所有工程的版本号改成RELEASE,
,再deploy
现在Nexus私服服务器你不可能一直开着,本地仓库没有就会到私服仓库下载,私服一关闭,没人帮你下载,maven就死了。所以不用私服时将私服配置注释了,打开阿里云的配置吧。
(或者将私服仓库管理仓库全部去点,瞎配置一个不存在的,或者直接注释掉私服务器
配置这样也会去maven中央仓库下载)