maven知识点

一、Maven简介

1.1 在项目中如何导入jar包?

  • 下载jar包 (mvn)
  • 将下载的jar包拷贝到项目中(WEB-INF/lib)
  • 选择jar文件–右键–Add as Library

1.2 传统导入jar包的方式存在什么问题?

  • 步骤多(相对)——繁琐
  • 在不同的项目中如果需要相同的jar包,需要分别存储这个jar文件——冗余项目体积大
  • 在不同的环境下可能因为jar文件版本不一致导致项目无法运行(重新配置)——移植性差

1.3 项目生命周期

项目从编译到运行的整个过程

完整的生命周期:清理缓存—校验—编译—测试—打包—安装—部署

  • IDEA提供了一键构建项目的功能,但是如果我们需要自定义的生命周期管理,却没有现成的工具(清理缓存)

1.4 Maven简介

Maven是一个基于项目对象模型(POM)用于进行项目的依赖管理、生命周期管理的工具软件

核心功能

  • 依赖管理

  • 生命周期管理

  • 聚合工程

二、Maven安装及配置

2.1 Maven下载

  • http://maven.apache.org/download.cgi

2.2 Maven安装

Maven是基于Java语言进行开发的,因此依赖JDK(建议JDK1.7+)

开箱即用:直接解压即可

  • 解压(d:/mvn)
  • 目录结构:
    • bin 存放指令文件(Maven提供了一个mvn指令)
    • boot 包含了一个类加载框架的jar文件
    • conf 包含了Maven的核心配置文件settings.xml
    • lib 存放了maven运行所需的jar文件

2.3 配置环境变量

  • MAVEN_HOME D:\mvn\apache-maven-3.6.3

  • Path 增加 %MAVEN_HOME%\bin

测试
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-czWP5lwp-1639493922539)(imgs/1615948601495.png)]

三、Maven的项目结构

使用Maven进行项目还有一个好处:无论使用什么样 的开发工具(eclipse/idea)项目的结构是统一的。

3.1 Maven的项目结构

fmwy(项目名称)
--src--main (存放项目的源文件)--java (存放java代码,相当于传统项目中的src目录)--resources (存放配置文件和静态资源的目录,相当于传统项目的web目录)--test (存放项目的单元测试代码)--java(测试代码)
--pom.xml

3.2 pom.xml

POM Project Object Model,Maven可以根据pom文件的配置对此项目进行依赖管理;也就是说项目中需要依赖,直接在pom.xml进行配置即可

<?xml version="1.0" encoding="utf-8"?>
<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/xsd/maven-4.0.0.xsd"><!--指定项目模型版本--><modelVersion>4.0.0</modelVersion><!--指定项目的标识:G 企业标识 A 项目标识 V 版本--><groupId>com.qfedu</groupId><artifactId>fmwy</artifactId><version>1.0.0</version><!--配置当前项目的依赖--><dependencies></dependencies>
</project>

如果需要在当前项目中添加依赖,只需在pom.xml文件中进行依赖配置即可

配置依赖 找到依赖的坐标,添加dependencies标签即可

<!-- https://mvnrepository.com/artifact/mysql/mysql-connector-java -->
<dependency><groupId>mysql</groupId><artifactId>mysql-connector-java</artifactId><version>5.1.47</version>
</dependency>

四、依赖管理

4.1 Maven依赖管理的流程

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-4getFT2I-1639493922540)(imgs/1615952656309.png)]

4.2 Maven仓库介绍

  • 本地仓库 就是本地计算机上的某个文件夹(可以是自定义的任何文件夹)
  • 远程仓库 就是远程主机上的jar文件仓库
    • 中央仓库 maven官方提供的仓库,包含了所需的一切依赖(免配置)
    • 公共仓库 除了中央仓库以外的第三方仓库都是公共仓库,例如aliyun(需要配置)
    • 私服 企业搭建的供内部使用的maven仓库
maven仓库
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-EUsfIjWB-1639493922542)(imgs/1615953762130.png)]

4.3 Maven仓库配置

在maven_home/conf/settings.xml中进行配置

配置本地仓库

<localRepository>d:\repo</localRepository>

配置公共仓库

<mirrors><mirror><id>nexus-aliyun</id><mirrorOf>central</mirrorOf><name>Nexus aliyun</name><url>http://maven.aliyun.com/nexus/content/groups/public</url></mirror>
</mirrors>

五、项目生命周期管理

5.1 生命周期介绍

项目构建的声明周期:项目开发结束之后部署到运行环境运行的过程

  • 清除缓存
  • 检查
  • 编译
  • 测试(就会执行maven项目中test目录下的单元测试)
  • 打包(war 、 jar)
  • 安装 (jar会被安装到本地仓库)
  • 部署 (将项目生成的包放到外部服务器中—私服仓库)

5.2 生命周期管理指令

在项目的根目录下执行mvn指令(此目录下必须包含pom.xml)

  • 清除缓存
mvn clean
  • 检查
mvn check
  • 编译
mvn compile
  • 测试
mvn test
  • 打包
mvn package
  • 安装
mvn install
  • 部署
mvn deploye

六、基于IDEA的Maven使用

6.1 在IDEA中关联Maven

maven配置
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-deeeiH8r-1639493922543)(imgs/1615963348490.png)]
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-JX37BPXo-1639493922543)(imgs/1615963666386.png)]

说明: IDEA本身集成了Maven,考虑到IDEA和Maven版本的兼容性,Idea不建议配置比默认版本更新的版本,建议使用idea自带的maven。

6.2 使用IDEA创建Maven项目

6.2.1 Java项目
创建Java项目
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-5R9OQfeU-1639493922544)(imgs/1615964274767.png)]
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-v1wQOwiB-1639493922545)(imgs/1615964923674.png)]
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-m4dYghBA-1639493922545)(imgs/1615965081111.png)]
6.2.2 web项目
  • 创建maven项目:maven-demo2

  • 在pom.xml文件设置打包方式为war

    <?xml version="1.0" encoding="UTF-8"?>
    <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/xsd/maven-4.0.0.xsd"><modelVersion>4.0.0</modelVersion><groupId>com.qfedu</groupId><artifactId>maven-demo2</artifactId><version>1.0.0</version><!--设置项目打包方式为war--><packaging>war</packaging></project>
    
  • 完成web项目结构

    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-8WjDxUSM-1639493922547)(imgs/1615966156430.png)]

  • 配置web组件—Tomcat

    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-lPE9NhSB-1639493922548)(imgs/1615966233010.png)]

    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-1bDLLGSg-1639493922548)(imgs/1615966284891.png)]

    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-rZy4Cccd-1639493922549)(imgs/1615966379430.png)]

  • 部署web项目

    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-XnmqI1I6-1639493922550)(imgs/1615966537967.png)]

    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-ItrjW2wt-1639493922552)(imgs/1615966622390.png)]

6.3 在IDEA中使用Maven进行依赖管理

6.3.1 查找依赖坐标
  • https://mvnrepository.com/
6.3.2 添加依赖
  • 将依赖的坐标配置到项目的pom.xml文件dependencies标签中
<?xml version="1.0" encoding="UTF-8"?>
<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/xsd/maven-4.0.0.xsd"><modelVersion>4.0.0</modelVersion><groupId>com.qfedu</groupId><artifactId>maven-demo2</artifactId><version>1.0.0</version><!--设置项目打包方式为war--><packaging>war</packaging><dependencies><!--在此位置配置项目中所需依赖的坐标 GAV--><dependency><groupId>com.google.code.gson</groupId><artifactId>gson</artifactId><version>2.8.5</version></dependency><dependency><groupId>org.projectlombok</groupId><artifactId>lombok</artifactId><version>1.18.18</version><scope>provided</scope></dependency></dependencies>
</project>
6.3.3 依赖范围

在通过dependency添加依赖时,可以通过scope标签配置当前依赖的适用范围

  • test 只在项目测试阶段引入当前依赖(编译、测试)

    <dependency><groupId>junit</groupId><artifactId>junit</artifactId><version>4.13.2</version><scope>test</scope>
    </dependency>
    
  • runtime 只在运行时使用(运行、测试运行)

  • provided 在(编译、测试、运行)

  • compile 在(编译、测试、运行、打包)都引入

6.4 在IDEA中使用Maven进行项目构建

6.4.1 Maven项目构建生命周期说明
  • clean 清理缓存 清理项目生成的缓存
  • validate 校验 验证项目需要是正确的(项目信息、依赖)
  • compile 编译 编译项目专供的源代码
  • test 测试 运行项目中的单元测试
  • package 打包 将项目编译后的代码打包成发布格式
  • verify 检查 对集成测试的结果进行检查、确保项目的质量是达标的
  • install 安装 将包安装到maven的本地仓库,以便在本地的其他项目中可以引用此项目(聚合工程)
  • deploy 部署 将包安装到私服的仓库,以供其他开发人员共享
6.4.2 IDEA进行生命周期管理
  • 可视化

    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-3zlBGV49-1639493922553)(imgs/1615970887716.png)]

  • 终端指令

    选择项目名称—右键—Open in Terminal

    mvn clean

七、私服

企业搭建供内部使用的一个Maven仓库

  • 开发者需要依赖直接从私服下载
  • 私服可以实现企业内部依赖的共享:当企业开发了一个通用插件(jar),可以发布到私服,可以连接到当前私服的其他开发者就可以共享这个插件了

7.1 私服搭建

我们可以通过专门的Maven仓库管理软件来搭建私服。例如:Apache Archiva、Nexus

7.1.1 下载Nexus
  • 官网 https://www.sonatype.com/
  • 下载 https://help.sonatype.com/repomanager2/download
7.1.2 解压nexus

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-msbenlmB-1639493922556)(imgs/1615972207503.png)]

7.1.3 安装并运行nexus
  • 进入到nexus-2.14.11-01/bin目录

  • 管理员身份打开cmd命令行,执行指令

    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-gk00OGO6-1639493922559)(imgs/1615972590023.png)]

7.1.4 登录Nexus

私服管理器登录地址: http://localhost:8081/nexus

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-w6LzUBsH-1639493922560)(imgs/1615972765110.png)]

  • 私服中仓库类型

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-VFt0wc7V-1639493922561)(imgs/1615972987904.png)]

  • 私服仓库组的配置

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-DbBt9WmM-1639493922562)(imgs/1615973337723.png)]

7.2 配置私服

7.2.1 在maven的settings.xml文件的servers标签中
<!--配置连接私服所需的帐号和密码-->
<server> <id>nexus-public</id> <!-- nexus的认证id --><username>admin</username> <!--nexus中的用户名密码--><password>admin123</password> 
</server>
7.2.2 在maven的settings.xml文件的profiles标签中

repository 和 pluginRepository的 id子标签的值,要和上面配置的server 的id子标签的值一致

<profile> <id>nexus</id> <repositories> <repository> <id>nexus-public</id>      <name>Nexus Release Snapshot Repository</name>   <url>http://localhost:8081/nexus/content/groups/public/</url><releases><enabled>true</enabled></releases> <snapshots><enabled>true</enabled></snapshots> </repository></repositories> <pluginRepositories><pluginRepository> <id>nexus-public</id> <url>http://localhost:8081/nexus/content/groups/public/</url><releases><enabled>true</enabled></releases> <snapshots><enabled>true</enabled></snapshots> </pluginRepository> </pluginRepositories> 
</profile>
7.2.3 在maven的settings.xml文件的activeProfiles配置激活profile
 <activeProfiles><activeProfile>nexus</activeProfile></activeProfiles>

Maven聚合工程

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/450431.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

使用SpringBoot yml配置文件

前些天发现了一个巨牛的人工智能学习网站&#xff0c;通俗易懂&#xff0c;风趣幽默&#xff0c;忍不住分享一下给大家。点击跳转到教程。 1.上一次我们已经使用SpringBoot实现了一个简单的HelloWord程序&#xff0c;辣么接下来我们简单的使用一下他的yml格式的配置文件。 2.在…

软件行业资讯

为什么只有设计师才能发明流行的新语言 先回顾一下知名编程语言的作者和创造时间&#xff1a;Fortran 语言&#xff0c;50年代&#xff0c;IBM 研究员&#xff1b;Lisp 语言&#xff0c;50年代&#xff0c;MIT 的教授和学生&#xff1b;C语言&#xff0c;70年代&#xff0c;贝尔…

spring知识点

一、Spring概述 1.1 web项目开发中的耦合度问题 在Servlet中需要调用service中的方法&#xff0c;则需要在Servlet类中通过new关键字创建Service的实例 public interface ProductService{public List<Product> listProducts(); }public class ProductServiceImpl1 imple…

Linux系统下的权限试题测试

不会做的留言&#xff0c;到时在发布答案&#xff01;一、 有两个参赛团队team1、team2&#xff0c;两个团队各3人, 这两个团队互相竞争&#xff0c;各需提交一份报告&#xff0c;每组成员可以修改自己团队内的所有文件&#xff0c;且不能让其他团队的人修改自己的文件内容&…

电子科大软件系统架构设计——软件建模详细设计

文章目录 软件建模详细设计概述软件建模详细设计目标软件建模详细设计原则开闭原则里氏 (Liskov) 替换原则依赖倒置原则接口分离原则单一职责原则最少知识原则&#xff08;迪米特法则&#xff09;高内聚原则松耦合原则可重用原则 软件建模详细设计内容 UML 软件静态结构视图建模…

YAML文件解析

前些天发现了一个巨牛的人工智能学习网站&#xff0c;通俗易懂&#xff0c;风趣幽默&#xff0c;忍不住分享一下给大家。点击跳转到教程。 YAML是“另一种标记语言”的外语缩写,YAML 是一种比JSON&#xff08;json多层次{ 与 [ 会被搞晕的&#xff09;更直观的表现形式&#xf…

120分钟React快速扫盲教程

在教程开端先说些题外话&#xff0c;我喜欢在学习一门新技术或读过一本书后&#xff0c;写一篇教程或总结&#xff0c;既能帮助消化&#xff0c;也能加深印象和发现自己未注意的细节&#xff0c;写的过程其实仍然是一个学习的过程。有个记录的话&#xff0c;在未来需要用到相关…

springmvc知识点

一、SpringMVC概述 Spring MVC 是由Spring官方提供的基于MVC设计理念的web框架。 SpringMVC是基于Servlet封装的用于实现MVC控制的框架&#xff0c;实现前端和服务端的交互。 1.1 SpringMVC优势 严格遵守了MVC分层思想 采用了松耦合、插件式结构&#xff1b;相比较于我们封装的…

spring @component的作用

前些天发现了一个巨牛的人工智能学习网站&#xff0c;通俗易懂&#xff0c;风趣幽默&#xff0c;忍不住分享一下给大家。点击跳转到教程。 1、controller 控制器&#xff08;注入服务&#xff09; 2、service 服务&#xff08;注入dao&#xff09; 3、repository dao&#xff…

微信小程序 悬浮按钮

2019独角兽企业重金招聘Python工程师标准>>> 效果视频 https://pan.baidu.com/s/1yfrDaG9YAX0--v0EA3awZA 布局需要按照圆形排列&#xff0c;所以我们需要计算每个点的坐标 代码部分 <view styleposition:fixed; wx:for"{{list}}" wx:for-index"i…

C语言const关键字—也许该被替换为readolny

const 是constant 的缩写&#xff0c;是恒定不变的意思&#xff0c;也翻译为常量、常数等。很不幸&#xff0c;正是因为这一点&#xff0c;很多人都认为被const 修饰的值是常量。这是不精确的&#xff0c;精确的说应该是只读的变量&#xff0c;其值在编译时不能被使用&#xff…

dbus服务自启动方法

Linux 一般发行版上 "/usr/share/dbus-1/services/"目录就是dbus放service文件的地方。 需要自动启动的服务器 就在这个目录放一个 service文件&#xff0c;内容如下&#xff1a; $ cat /usr/share/dbus-1/services/dhcdbd.service [D-BUS Service] Namecom.redhat.…

在Spring Boot中使用 @ConfigurationProperties 注解

前些天发现了一个巨牛的人工智能学习网站&#xff0c;通俗易懂&#xff0c;风趣幽默&#xff0c;忍不住分享一下给大家。点击跳转到教程。 上一篇博客写了 如何在Spring Boot application中配置mail . 使用 Value 注解注入属性. 但 Spring Boot 提供了另一种方式 &#xff0c;能…

Micronaut教程:如何使用基于JVM的框架构建微服务

\本文要点\\Micronaut是一种基于jvm的现代化全栈框架&#xff0c;用于构建模块化且易于测试的微服务应用程序。\\tMicronaut提供完全的编译时、反射无关的依赖注入和AOP。\\t该框架的开发团队和Grails框架的开发团队是同一个。\\tMicronaut框架集成了云技术&#xff0c;服务发现…

C语言extern关键词—最会带帽子的关键字

extern&#xff0c;外面的、外来的意思。那它有什么作用呢&#xff1f;举个例子&#xff1a;假设你在大街上看到一个黑皮肤绿眼睛红头发的美女&#xff08;外星人&#xff1f;&#xff09;或者帅哥。你的第一反应就是这人不是国产的。extern 就相当于他们的这些区别于中国人的特…

解决Coldfusion连接MySQL数据库的问题

在连接MySQL时&#xff0c;出现了如下错误&#xff1a; Connections to MySQL Community Server are not supported. Please contact MySQL to obtain a MySQL Enterprise or Commercial version. 解决方案&#xff1a; step 1: download the JDBC driver JDBC Driver for MySQ…

范式知识点

Mysql数据库 ⽬前关系数据库有六种范式&#xff1a; 第⼀范式&#xff08;1NF&#xff09;、第⼆范式&#xff08;2NF&#xff09;、第三范式&#xff08;3NF&#xff09;、巴斯-科德范式 &#xff08;BCNF&#xff09;、第四范式(4NF&#xff09;和第五范式&#xff08;5NF&a…

Tensorflow入门----占位符、常量和Session

安装好TensorFlow之后&#xff0c;开一个python环境&#xff0c;就可以开始运行和使用TensorFlow了。 先给一个实例&#xff0c; #先导入TensorFlowimport tensorflow as tf # Create TensorFlow object called hello_constanthello_constant tf.constant(Hello World!) with …

C语言union关键字

union 关键字的用法与struct 的用法非常类似。union 维护足够的空间来置放多个数据成员中的“一种”&#xff0c;而不是为每一个数据成员配置空间&#xff0c;在union 中所有的数据成员共用一个空间&#xff0c;同一时间只能储存其中一个数据成员&#xff0c;所有的数据成员具有…

js 深拷贝 和 浅拷贝

1、 ...运算符 &#xff08;浅拷贝&#xff09; let obj {a:1,b:2}; let obj2 {...obj}; obj.a3 obj //{a: 3, b: 2} obj2 //{a: 1, b: 2}a {a:[{b:1}]}; b a ;b.a[0].b 2; //b {a:[{b:2}]}a // a {a:[{b:2}]} 2、 JSON.parse(JSON.stringify(参数))…