Maven(二):常用命令、依赖管理

Maven(二):常用命令、依赖管理

 

相关阅读:

Maven(一):安装与环境配置、使用Maven搭建web项目

Maven(二):常用命令、依赖管理

Maven(三):将web项目的war包热部署到远程Tomcat服务器

Maven(四):使用maven整合Spring+SpringMVC+Mybatis框架详细步骤

Maven(五):使用maven整合Struts2+Spring+Hibernate框架详细步骤


 

在上一篇文章中,我们介绍了maven的安装配置与使用maven创建了一个web项目,现在,我们就稍微了解下maven工程的一些基础知识:

1、maven项目标准的目录结构:

Maven(二):常用命令、依赖管理

对项目进行细分:

Maven(二):常用命令、依赖管理

 

2、maven的常用命令:

maven常用的命令主要有:clear,compile,test,package,install,deploy。

(1)clean:清理:将项目根目录下的targer目录清理掉

Maven(二):常用命令、依赖管理

(2)compile:编译:将项目中的.java文件编译为.class文件

Maven(二):常用命令、依赖管理

(3)test:单元测试:将项目根目录下src/test/java目录下的单元测试类都会执行,单元测试类名有要求:XxxTest.java

Maven(二):常用命令、依赖管理

(4)package:打包:将项目打包,打包到项目根目录下target目录:

web project —war包

java project —jar包

(5)install:安装:打包到本地仓库,解决本地仓库多个项目公用一个jar包

(6)maven项目的生命周期:

在maven中存在“三套”生命周期,每一套生命周期相互独立,互不影响。在一套生命周期内,执行后面的命令,前面的操作会自动执行。

①CleanLifeCycle:清理生命周期:clean

②defaultLifeCycle:默认生命周期:compile、test、package、install、deploy

③siteLifeCycle:站点生命周期:site

 

3、依赖范围:

maven项目的核心配置文件是pom.xml,我们可以在这个文件中,添加需要依赖的Jar包,同时还可以在<scope>标签中配置jar的有效范围,即依赖范围,如下图:

Maven(二):常用命令、依赖管理

添加依赖:默认依赖范围是compile

provided:运行时部署到tomcat后不再需要

如果将servlet-api.jar设置为compile,打包后项目包含servlet-api.jar,war包部署到tomcat跟tomcat中存在的servlet-api.jar包冲突,导致运行失败:

Maven(二):常用命令、依赖管理

解决:修改依赖的范围:

Maven(二):常用命令、依赖管理

 

4、依赖管理:

(1)传递依赖:A依赖B,B依赖C,B是A的直接依赖,C是A的传递依赖。

遵循原则:

–第一声明者优先原则:谁先定义的就用谁的传递依赖

–路径近者优先原则:直接依赖级别高于传递依赖

(2)排除依赖:

Maven(二):常用命令、依赖管理

(3)版本锁定:(重点)

Maven(二):常用命令、依赖管理

Maven(二):常用命令、依赖管理

 

5、依赖传递的范围:

Maven(二):常用命令、依赖管理

 

 

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/114624.html原文链接:https://javaforall.net

(0)
上一篇 2021年10月5日 上午7:00
下一篇 2021年10月5日 上午8:00


相关推荐

  • 测试用例等价类划分法讲解_等价类分析法设计用例的方法

    测试用例等价类划分法讲解_等价类分析法设计用例的方法1.提交缺陷报告遇到的问题1.不知道是否全面测试了所有的内容(1)是不是所有的功能点都测试到了(2)是不是每个功能点都测试全面了2.存在大量冗余测试,影响测试效率(1)有些功能点可能测试多次3.对新版本的测试效果很难实施(1)每个版本测试的数据、步骤都不一样,随意性很强4.测试的覆盖率无法衡量(1)测试的好坏不得而知5.……为了避免以上问题,所以做测试用例,对测试过程可控,对测试质量有把握。2.什么是测试用例?(1)测试用例主要记录了测试的目的、步骤、输入的数据、预期结果等内容,它

    2022年10月17日
    6
  • IntelliJ IDEA创建Servlet最新方法 Idea版本2020.2.2以及IntelliJ IDEA创建Servlet 404问题(超详细)

    IntelliJ IDEA创建Servlet最新方法 Idea版本2020.2.2以及IntelliJ IDEA创建Servlet 404问题(超详细)第一次用IntelliJIDEA写java代码,之前都是用eclipse,但eclipse太老了。下面为兄弟们奉上IntelliJIDEA创建Servlet方法,写这个的目的也是因为在网上找了很多资料但都过时了,所以把我走过的坑和弯路直接告诉兄弟们,为大家节省点宝贵的时间。说一下现在创建Servlet或者是web和之前的主要区别,之前是直接创建,现在是先要创建java项目然后通过添加支持框架变成Servlet或者web项目下面这些截图最好都看完,因为有的地方有坑,都在后面的截图里。我用

    2022年6月17日
    57
  • Python定义全局变量的用法

    Python定义全局变量的用法全局变量是编程语言中常见的一种变量 通过全局定义 可以是某对象函数创建 也可以是本程序任何位置创建 能够被本程序中的所有对象或函数进行引用 全局变量的定义有利于程序的变量共享 简化了添加和修改的程序 和 C 语言一样 Python 也具有全局变量 其定义全局变量的用法有两种 1 声明法该方法是直接在当前模块中进行全局变量定义声明 使用 global 的声明方式 再进行引用 OLD URL

    2026年3月18日
    2
  • GitLab新建分支和删除分支

    GitLab新建分支和删除分支1 新建分支

    2026年3月19日
    3
  • 国嵌linux大话数据结构代码,大话数据结构源代码.pdf

    国嵌linux大话数据结构代码,大话数据结构源代码.pdf大话数据结构源代码第一章线性表1.01线性表顺序存储_List#include”stdio.h”#include”stdlib.h”#include”io.h”#include”math.h”#include”time.h”#defineOK1#defineERROR0#defineTRUE1#defineFALSE0#defineMAXSIZE20/*…

    2022年6月24日
    29
  • idea替换内容快捷键_intellij快捷键

    idea替换内容快捷键_intellij快捷键ctrl+r:当前文件内容替换,指的是在当前打开的文件中替换匹配的字符,只操作一个文件。ctrl+shift+r:在路径中替换,指的是在选定的目录下或者类包下,查找要被替换的字符,再在第二个输入框中输入要替换的字符,点击弹出框的右下角的replace或者replaceall即可。…

    2026年4月17日
    8

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号