关山难越,谁悲失路之人;萍水相逢,尽是他乡之客。
百度360必应搜狗淘宝本站头条
当前位置:网站首页 > 编程教程 > 技术文章 > 正文

Maven详解—下

guanshanw 2023-09-19 13:14 12 浏览 0 评论

8 传递依赖冲突解决

8.1 排除依赖

pom.xml文件中添加exclusions

<dependency> <groupId>org.apache.struts</groupId> <artifactId>struts2-spring-plugin</artifactId> <version>2.3.24</version> <exclusions> <!-- 将struts-spring-plugin.jar中的spring-beans传递依赖排除 --> <exclusion> <groupId>org.springframework</groupId> <artifactId>spring-beans</artifactId> </exclusion> </exclusions> </dependency>

8.2 版本锁定

<!-- 版本锁定: 指定项目中依赖的版本 --> <dependencyManagement> <dependencies> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-beans</artifactId> <version>5.0.2.RELEASE</version> </dependency> </dependencies> </dependencyManagement>

9 通过maven对项目进行拆分, 聚合

对现有maven ssm项目进行拆分, 拆分思路: 将dao层的代码以及配置文件全部提取到一个表现上独立的工程中. 同样, service, controller拆分.

ssm-parent: 父工程

ssm-dao: 子模块

ssm-service

ssm_web

拆分完成, 对拆分后的项目进行聚合, 父工程

9.1 创建父工程

Ctrl + N, 创建Maven Project 勾选 create a simple project packaging选择pom

创建好父工程目录结构, 只有pom.xml, 父工程不进行编码

1. 项目需要的依赖信息, 都可以在父工程中定义, 子模块继承

2. 将各个子模块聚合到一起

9.2 将创建的父工程发布到本地仓库

项目上右键 Run as 5 Maven install

将来service, dao 发布到本地仓库. 如果父工程不再仓库中, 则service, dao会报错

9.3 创建子模块 ssm-dao

Ctrl + N new Maven Module 勾选create a simple project packaging 选择jar

ssm-dao负责数据访问层: 包含dao相关代码 & 配置文件

9.4 创建子模块 ssm-service

Ctrl + N new Maven Module 勾选create a simple project packaging 选择jar

在service工程pom.xml文件添加ssm-dao的依赖

9.5 创建子模块 ssm-web

Ctrl + N new Maven Module 勾选create a simple project packaging 选择war

pom.xml文件添加ssm-service的依赖

9.6 单元测试

9.6.1 dao层

要测试的mapper接口上右键新建JUnit Test Case 下一步: source folder选择src/test/java 下一步, 勾选要测试的方法

@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration("classpath:spring/applicationContext-*.xml")
public class ItemsMapperCustomTest {
@Autowired
private ItemsMapperCustom itemsMapperCustom;
@Test
public void testFindItemsList() throws Exception {
 List<ItemsCustom> itemsList = itemsMapperCustom.findItemsList(null);
 for (ItemsCustom itemsCustom : itemsList) {
 System.out.println(itemsCustom);
 }
 }
}

9.6.2 service层

@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration("classpath*:spring/applicationContext-*.xml")
public class ItemsServiceTest {
@Autowired
private ItemsService itemsService;
@Test
public void testFindItemsList() throws Exception {
List<ItemsCustom> itemsList = itemsService.findItemsList(null);
for (ItemsCustom itemsCustom : itemsList) {
System.out.println(itemsCustom.getName());
}
}

注意 : 批量加载Spring的配置 :

classpath*:spring/applicationContext-*.xml

既要加载本项目的配置文件, 还要加载jar包中的配置文件

9.7 运行方式

方式1 : 运行父工程

父工程将各个子模块聚合在一起. 将ssm-web 打成war包, 发布到tomcat

父工程上右键Run as maven build…tomcat:run

需要注意:

Spring V4.1.0+的版本在不支持Servlet3.0的应用服务器上跑时会报以下错误:

NoSuchMethodError: javax.servlet.http.HttpServletResponse.getStatus()I

比如说:tomcat 7以下的版本、jboss 4.2.3以下的版本

方式2: 部署到tomcat8, 直接运行ssm_web

10 私服应用

10.1 私服安装

1 下载安装包

nexus-…-bundle.zip

2 解压到本地磁盘

3 使用管理员权限打开dos, 在dos下执行命令安装私服

进到nexus的解压路径的bin目录下, dos窗口: 输入nexus install

4 启动服务

nexus start 或者 在windows服务中, 手动启动nexus服务

如果是nexus3.xx , 则不需要安装, 进到bin目录后, dos窗口, 输入nexus.exe /run, 回车即可运行

查看nexus的配置文件conf/nexus.properties

5 访问URL:

登录: admin/admin123

10.2 私服仓库类型

hosted : 宿主仓库

存放本公司开发的jar包(正式版本, 测试版本, 第三方)

proxy : 代理仓库

代理中央仓库, Apache下测试版本的jar包

group : 组仓库

将来连接组仓库. 包含hosted宿主仓库, proxy代理仓库

10.3 上传jar包到私服

1. 在maven目录下conf/setting.xml认证: 配置用户名密码

<servers>标签内添加

<server>
<id>maven-releases</id>
<username>admin</username>
<password>admin123</password>
</server>
<server>
<id>maven-snapshots</id>
<username>admin</username>
<password>admin123</password>
</server>

2 在将要上传的项目的pom.xml中配置jar包上传路径

<distributionManagement>
<repository>
<id>maven-releases</id>
<url>http://localhost:8081/repository/maven-releases/</url>
</repository>
<snapshotRepository>
<id>maven-snapshots</id>
<url>http://localhost:8081/repository/maven-snapshots/</url>
</snapshotRepository>
</distributionManagement>

3 执行命令发布项目到私服(上传)

ssm_dao项目右键run as maven build… 输入deploy, 点击run

10.4 下载jar包到本地仓库

1 在maven目录下conf/settings.xml中配置模板

在<profiles> 内添加

<profile>
<!-- profile的id -->
<id>dev</id>
<repositories>
<repository>
<!-- 仓库的id, repositories可以配置多个仓库, 保证id不重复 -->
<id>nexus</id>
<!-- 仓库的地址, 即nexus仓库组的地址 -->
<url>http://localhost:8081/repository/maven-public/</url>
<!-- 是否下载releases构件 -->
<releases>
<enabled>true</enabled>
</releases>
</repository>
</repositories>
<pluginRepositories>
<!-- 插件仓库, maven的运行依赖插件, 也需要从私服下载插件 -->
<pluginRepository>
<!-- 插件仓库的id不允许重复, 如果重复后边配置会覆盖前边 -->
<id>public</id>
<name>Public Repositories</name>
<url>http://localhost:8081/repository/maven-public/</url>
</pluginRepository>
</pluginRepositories>
</profile>

2 激活模板

<settings>标签内添加

<activeProfiles>
<activeProfile>dev</activeProfile>
</activeProfiles>

11 把第三方jar包放入本地仓库或私服

11.1 导入本地库

mvn install:install-file -DgroupId=com.alibaba -DartifactId=fastjson -Dversion=1.1.37 -Dfile= fastjson-1.1.37.jar -Dpackaging=jar

11.2 导入私服

需要在maven软件的核心配置文件settings.xml中配置第三方仓库的server信息

<server>
<id>thirdparty</id>
<username>admin</username>
<password>admin123</password>
</server>

执行以下命令

mvn deploy:deploy-file -DgroupId=com.alibaba -DartifactId=fastjson -Dversion=1.1.37 -Dpackaging=jar -Dfile=fastjson-1.1.37.jar -Durl=http://localhost:8081/nexus/content/repositories/thirdparty/ -DrepositoryId=thirdparty

11.3 参数说明

DgroupId和DartifactId构成了该jar包在pom.xml的坐标,项目就是依靠这两个属性定位。自己起名字也行。

Dfile表示需要上传的jar包的绝对路径。

Durl私服上仓库的位置,打开nexus——>repositories菜单,可以看到该路径。

DrepositoryId服务器的表示id,在nexus的configuration可以看到。

Dversion表示版本信息,

关于jar包准确的版本

包的名字上一般会带版本号,如果没有那可以解压该包,会发现一个叫MANIFEST.MF的文件,这个文件就有描述该包的版本信息。

比如Specification-Version: 2.2可以知道该包的版本了。

上传成功后,在nexus界面点击3rd party仓库可以看到这包。

Maven详解—上链接:https://www.toutiao.com/i6740573998544847373/

相关推荐

七条简单命令让您玩转Git
七条简单命令让您玩转Git

凭借着出色的协作能力、快速部署效果与代码构建辅助作用,Git已经得到越来越多企业用户的青睐。除了用于开发商业及消费级应用之外,众多科学及政府机构也开始尝试使用这...

2023-10-07 12:14 guanshanw

基本完整的关于Git分支branch的操作
基本完整的关于Git分支branch的操作

Git使用背景项目中要用到dev或者其他分支开发完代码,需要将该分支合并到master的需求操作步骤下面以dev名称为lex为分支名为例来操作一遍客户端操作:...

2023-10-07 12:14 guanshanw

Git 进阶(合并与变基)
Git 进阶(合并与变基)

在Git中整合来自不同分支的修改主要有两种方法:合并(merge)以及变基(rebase)合并(merge)merge流程图merge的原理是找到这两个分...

2023-10-07 12:13 guanshanw

Git学习笔记 003 Git进阶功能 part5 合并(第一部分)

合并(merge)是很常用的操作。尤其是一个庞大的很多人参与开发的企业级应用。一般会设定一个主分支,和多个副分支。在副分支开发完成后,合并到主分支中。始终保持主分支是一个完整的,稳定的最新状态的分支。...

非标题党,三张图帮你理解git merge和git rebase的区别
非标题党,三张图帮你理解git merge和git rebase的区别

初始场景:基于正常的开发分支修改几个小bug,然后在合并到开发分支上。gitmergegitcheckoutfeaturegitmergeho...

2023-10-07 12:13 guanshanw

git 初次使用(01)
git 初次使用(01)

先从github上克隆代码下来:使用vscode克隆代码如下图,填写上github仓库地址:vscode有时候克隆代码速度比较慢,可以用命令行方式克隆gitc...

2023-10-07 12:12 guanshanw

Git 远程操作

4.Git远程操作命令说明gitremote远程版本库操作gitfetch从远程获取版本库gitpull下载远程代码并合并gitpush上传远程代码并合并4.1远程版本库操作gitre...

Git常用命令-总结
Git常用命令-总结

创建git用户$gitconfig--globaluser.name"YourName"$gitconfig--globaluser.em...

2023-10-07 12:12 guanshanw

git中删除从别人clone下来项目的git信息,并修改为自己的分支

如果你从别人的Git存储库中克隆了一个项目,并想要删除与该存储库相关的Git信息,并将其修改为你自己的分支,则可以执行以下步骤:使用gitclone命令克隆存储库:gitclone<u...

git系列-回滚和放弃本地修改

回滚历史提交就是reset的功能。这种情况是已经提交远程仓库,需要回滚到之前的提交。gitreset--hardcommitId//注:强制提交后,当前版本后面的提交版本将会删掉!gi...

GIT使用小技巧大全
GIT使用小技巧大全

在大型软件工程的开发过程中,版本控制是无法绕过去的;目前来说,最火的版本控制软件就是GIT了。早两年SVN比较火,不过被大神linus喷了几次后,就日落西山了,...

2023-10-07 12:11 guanshanw

git相关命令-上
git相关命令-上

这些命令都是看了文档后,个人觉得比较有用的一些,展示给大家。回到远程仓库的状态抛弃本地所有的修改,回到远程仓库的状态。gitfetch--all&...

2023-10-07 12:10 guanshanw

Git命令行接口:掌握Git的必备技能
Git命令行接口:掌握Git的必备技能

Git是一款强大的分布式版本控制工具,它支持命令行界面操作。熟练掌握Git命令行接口,是开发者使用Git的必备技能之一。在这篇文章中,我们将介绍Git命令行接口...

2023-10-07 12:10 guanshanw

Git命令详解
Git命令详解

相信各位小伙伴们应该都对git有一些了解,毕竟作为代码管理的神器,就算不是IT行业的小伙伴肯定也或多或少的听说过一些。今天就来和小伙伴们分享一下自己总结的常用命...

2023-10-07 12:10 guanshanw

工作7年收集到的git命令
工作7年收集到的git命令

概念git中的术语解释:仓库也叫版本库(repository)stage:暂存区,add后会存到暂存区,commit后提交到版本库git安装linux...

2023-10-07 12:10 guanshanw

取消回复欢迎 发表评论: