maven依赖、拆分、聚合、私服的安装上传、下载

Maven进阶

一.传递依赖冲突解决

首先jar包分为传递依赖和直接依赖,在实际操作中这种东西分清楚会比较好,能帮助减少一些不必要的jar包冲突。

举个例子:A(项目)依赖B,B依赖C(1.1版本),B是A的直接依赖,C就是A的传递依赖,解决家暴冲突也有好几种方法:第一声明者优先原则、路径近者优先原则;

1.Maven解决冲突的方式

1.1第一声明原则

其实就是谁先声明,就先用谁的,包括声明者所用到的直接依赖和传递依赖:比如说:我先引入struts-spring核心包,此时会加载除核心包之外的所有依赖包,然后我在引入spring核心包,这时候假如说struts-spring核心包中有一个bean包且版本是3.5,spring核心包中也有一个bean包且版本是4.24,那么根据第一声明优先原则,整个项目会使用bean的3.5版本,且不会存在两个版本的包都存在项目中,只能有一个。

1.2路径近者优先原则

比如说:我先引入struts-spring核心包,此时会加载除核心包之外的所有依赖包,其中假设包含一个bean包,且版本是3.5的,那么我就直接在引如一个bean包,且这个版本是4.24,那么此时整个项目就会使用bean4.24。

2.解决冲突依赖的方式

2.1排除依赖

maven依赖、拆分、聚合、私服的安装上传、下载

经过上述的操作之后在pom.xml文件中会存在

maven依赖、拆分、聚合、私服的安装上传、下载

此时就会将2.3.24下面的bean包给排除掉

2.2版本锁定(大家或推荐使用)

maven依赖、拆分、聚合、私服的安装上传、下载

在这里版本锁定只是说锁定各个版本,不能加入依赖,所以在锁定完版本,我们还是需要正常引入各个jar包的依赖。

二.Maven整合ssh框架

总结模型ssh框架整体运转流程

maven依赖、拆分、聚合、私服的安装上传、下载

项目环境:maven+spring+hibernate+struts2

1、Ssh项目整合步骤

1.1导入jar包(推荐是使用版本锁定)

导入jar包之后,我们可以在书写配置文件时利用ctrl+shift+t找到相应的jar,加快我们配置的速度,当然建议能复制的一定要复制之前已经写好的,运行完善的。

maven依赖、拆分、聚合、私服的安装上传、下载

1.2书写web.xml配置文件

当然如果你从一开始建立maven工程时就发现项目标准结构不全,尤其是少了web.xml文件,可以做如下操作

点击本项目à右键àjavaeeToolàGDDS,会自动补全webapps下面的web-inf以及web.xml

在web.xml中配置监听器、struts2的核心过滤器

maven依赖、拆分、聚合、私服的安装上传、下载

1.3书写spring配置文件

数据库配置文件引入

maven依赖、拆分、聚合、私服的安装上传、下载

配置c3p0数据源,当然还有其他的数据源,dhcp的效果也比c3p0好,其中这里面的参数配置在源码中都能找到

maven依赖、拆分、聚合、私服的安装上传、下载

配置sessionFactory对象,这个必须配置,通过会话对数据库进行操作和管理,可以匹配不同的数据库配置文件

maven依赖、拆分、聚合、私服的安装上传、下载

配置事务管理器以及aop

maven依赖、拆分、聚合、私服的安装上传、下载

其他的如果选这手动配置bean以及手动建立依赖注入,可以自己尝试也可以用扫描驱动,扫描所有的包(这里是手动配置并注入依赖)

maven依赖、拆分、聚合、私服的安装上传、下载

1.3书写sturts.xml配置文件

这个没有更好的建议,书写配置时间长了,自然就练会了,为了节省代码尽量使用通配符,进行配置

maven依赖、拆分、聚合、私服的安装上传、下载

1.4书写hibernate配置文件

maven依赖、拆分、聚合、私服的安装上传、下载

1.5配置各类的接口以及实现类

在这个里就不过多介绍,希望都要配,便于后期维护

1.6注意点

第一个action类,原来在我们的stuts配置文件中,我们会将class写action类的全称,但是在这里,我们不需要这样配,因为spring已经在他的配置文件进行了bean管理。

maven依赖、拆分、聚合、私服的安装上传、下载

maven依赖、拆分、聚合、私服的安装上传、下载

还有一定要将struts配置成多实例的。

 

还有关于maven的单元测试,比如说我要测试一个dao操作数据库的实现类,目前我只能想到这个方法,后期等我学springboot注解可能会更好

maven依赖、拆分、聚合、私服的安装上传、下载

三.Maven拆分、聚合项目

根据maven+ssh的项目,结合maven拆分技术,对maven项目进行拆分

  1. 首先我们先建立父工程

maven依赖、拆分、聚合、私服的安装上传、下载

maven依赖、拆分、聚合、私服的安装上传、下载

 

在父类的pom.xml文件中,添加各jar包的版本控制,以及项目所需jar包依赖(下图添加后的效果)

maven依赖、拆分、聚合、私服的安装上传、下载

2、创建dao、service、web等子工程

 

2.1创建dao

maven依赖、拆分、聚合、私服的安装上传、下载

结合上述的ssh项目,那么在这里我们只需要整理这个与到相关的配置的

maven依赖、拆分、聚合、私服的安装上传、下载maven依赖、拆分、聚合、私服的安装上传、下载

在这我们直接将项目最基础的配置文件以及dao

Base中主要是一些数据库连接、事务、sessionfactory,

dao文件中主要是一些数据库操作的java类的实例

测试:

测试子项目是否能正常运行

maven依赖、拆分、聚合、私服的安装上传、下载maven依赖、拆分、聚合、私服的安装上传、下载

Maven-dao的配置成功,我们继续配置maven-service

2.2创建service

maven依赖、拆分、聚合、私服的安装上传、下载maven依赖、拆分、聚合、私服的安装上传、下载

maven依赖、拆分、聚合、私服的安装上传、下载

配置service应该用的相关配置文件配置之后会报错

maven依赖、拆分、聚合、私服的安装上传、下载maven依赖、拆分、聚合、私服的安装上传、下载

原因就是所依赖的userdao的包每过来,在此之前,我们已经通过将父工程安装至本地仓库

maven依赖、拆分、聚合、私服的安装上传、下载

那么在service中我们只需要引入maven-dao的jar包

maven依赖、拆分、聚合、私服的安装上传、下载maven依赖、拆分、聚合、私服的安装上传、下载maven依赖、拆分、聚合、私服的安装上传、下载

这个时候错误消失,并且在service下面多依赖了一个maven-dao,当我们把maven-dao这个工程关闭是,service将依赖一个maven-dao的jar包

maven依赖、拆分、聚合、私服的安装上传、下载maven依赖、拆分、聚合、私服的安装上传、下载

测试:关于service是否能正常运行

maven依赖、拆分、聚合、私服的安装上传、下载maven依赖、拆分、聚合、私服的安装上传、下载

验证成功

2.3创建web

maven依赖、拆分、聚合、私服的安装上传、下载maven依赖、拆分、聚合、私服的安装上传、下载

这个要选择打包方式为war包,完成后目前是最完整的结构

maven依赖、拆分、聚合、私服的安装上传、下载

同样会报错,我们需要引入service依赖,具体操作过程上面有

3、项目运行方式

        3.1运行父工程

        3.2运行自工程中的web工程

四.私服应用

maven依赖、拆分、聚合、私服的安装上传、下载

 4.1安装私服

解压至指定文件夹

maven依赖、拆分、聚合、私服的安装上传、下载

maven依赖、拆分、聚合、私服的安装上传、下载

以管理员身份运行dos窗口并进入D:\maven_server\nexus-2.12.0-01\bin下面

maven依赖、拆分、聚合、私服的安装上传、下载

执行安装命令(如图所示安装成功)

maven依赖、拆分、聚合、私服的安装上传、下载

启动服务(已成功启动)

maven依赖、拆分、聚合、私服的安装上传、下载

访问私服路径为:http://localhost:8081/nexus

D:\maven_server\nexus-2.12.0-01\conf下面

maven依赖、拆分、聚合、私服的安装上传、下载maven依赖、拆分、聚合、私服的安装上传、下载

成功页面

maven依赖、拆分、聚合、私服的安装上传、下载

4.2私服类型

maven依赖、拆分、聚合、私服的安装上传、下载

Hosted:宿主仓库

        存放本公司开发的jar包(正式版本、测试版本、第三方:存在版权问题--Oracle)

Proxy:代理仓库

        代理*仓库、Apache下测试版本的jar包

Group:组仓库

        将来连接组仓库。包含Hosted:宿主仓库,Proxy:代理仓库

4.3配置私服相关设置

4.3.1配置私服的认证、及上传

在mavenn文件夹下找到confàsetting.xmlà找到servers节点,在节内添加这些配置

maven依赖、拆分、聚合、私服的安装上传、下载

4.3.2配置上传私服的路径

比如说我要上传maven-dao项目到私服上,首先我需要在pom.xml文件配置

maven依赖、拆分、聚合、私服的安装上传、下载

然后右键启动maven,不过此时输入的命令是:deploy我们可以开maven控制窗口来观察

maven依赖、拆分、聚合、私服的安装上传、下载maven依赖、拆分、聚合、私服的安装上传、下载

maven依赖、拆分、聚合、私服的安装上传、下载

上传成功

4.3.2配置私服下载

在mavenn文件夹下找到confàsetting.xmlà找到profiles节点,在节内添加这些配置

maven依赖、拆分、聚合、私服的安装上传、下载

**模板

<activeProfiles>

    <activeProfile>dev</activeProfile>

  </activeProfiles>

 

1、如果你其中依赖jar包删除了,但是没有从私服下载,那么可能就是你的下载模板没有**

2、如果你的jar包没有安装在本地仓库那么你无法将你的jar上传至私服。

3、如果你对应项目没有pom.xml中没有如下图文件也下载

终于学完maven了