【java】【maven】【基础】MAVEN安装配置介绍
目录
1 下载
2 安装-windows为例
3 配置环境变量
3.1 JAVA_HOME
3.2 MAVEN_HOME
3.3 PATH
3.4 验证
4 MAVEN基础概念
4.1 仓库概念
4.2 坐标概念
4.2.1 打开网址
4.2.2 输入搜索内容junit
4.2.3 找到对应API名称点击
4.2.4 点击对应版本
4.2.5 复制MAVEN坐标
4.3 配置本地仓库
4.3.1 初始默认仓库
4.3.2 修改仓库位置
4.4 远程默认仓库(了解)
4.5 通过修改镜像仓库配置方式提速(必须)
4.6 全局setting与用户setting(了解)
5 MAVEN项目
5.1 手工创建工程
5.1.1 MAVEN工程目录结构
5.1.2 构建命令
5.2 插件创建工程
5.2.1 java工程
5.2.2 web工程
5.3 IDEA创建工程
5.3.1 配置MAVEN
5.3.2 手工创建java项目
5.3.2.1 编译运行(方式一)
5.3.2.2 编译运行(方式二推荐)
5.3.3 原型创建java项目
5.3.4 原型创建web项目
5.3.5 插件
5.3.5.1 配置tomcat7
5.3.5.2 自定义tomcat7的端口
5.3.5.3 做到配置
6 pom注释说明
7 依赖管理
7.1 依赖配置
7.2 依赖传递
7.3 可选依赖
7.4 排除依赖
7.5 依赖范围
8 生命周期与插件
8.1 生命周期
8.1.1 clean 生命周期
8.1.2 default生命周期
8.1.3 site构建生命周期
8.2 插件
前言:Apache Maven是一个(特别是Java编程)项目管理及自动构建工具,由Apache软件基金会所提供。基于项目对象模型(缩写:POM)概念,Maven利用一个中央信息片断能管理一个项目的构建、报告和文档等步骤。本文是学习MAVEN的启蒙
1 下载
打开 官方网址下载页面 MAVEN下载链接网址
2 安装-windows为例
新增文件夹develop,解压下载的文件到当前目录
3 配置环境变量
3.1 JAVA_HOME
略
3.2 MAVEN_HOME
3.3 PATH
3.4 验证
# cmd 执行
mvn
出现下图
4 MAVEN基础概念
4.1 仓库概念
4.2 坐标概念
4.2.1 打开网址
https://mvnrepository.com
4.2.2 输入搜索内容junit
4.2.3 找到对应API名称点击
4.2.4 点击对应版本
4.2.5 复制MAVEN坐标
<!-- https://mvnrepository.com/artifact/junit/junit -->
<dependency><groupId>junit</groupId><artifactId>junit</artifactId><version>4.12</version><scope>test</scope>
</dependency>
4.3 配置本地仓库
4.3.1 初始默认仓库
在当前登录PC的用户名目录下有个.m2文件(前提得在cmd输入mvn才会生成)
4.3.2 修改仓库位置
1、在文件夹develop目录下新建一个文件夹repository
2、打开目录D:\develop\apache-maven-3.9.3\conf下的settings.xml
找到下图位置进行修改
3、修改到设置的仓库新位置
4.4 远程默认仓库(了解)
4.5 通过修改镜像仓库配置方式提速(必须)
<mirror><id>alimaven</id><name>aliyun maven</name><url>http://maven.aliyun.com/nexus/content/groups/public/</url><mirrorOf>central</mirrorOf>
</mirror>
4.6 全局setting与用户setting(了解)
5 MAVEN项目
5.1 手工创建工程
5.1.1 MAVEN工程目录结构
1、基本目录结构纯手工创建文件夹
2、在project\project-java\src\main\java\ 下创建 com\runa
3、在project\project-java\src\main\java\com\runa新建一个Demo.java文件
package com.runa;public class Demo{public String say(String name){System.out.println("hello " + name);return "hello " + name;}}
4、在project\project-java\src\test\java\ 下创建 com\runa
5、在project\project-java\src\test\java\com\runa新建一个DemoTest.java文件
package com.runa;import org.junit.Test;
import org.junit.Assert;public class DemoTest{@Testpublic void testSay(){Demo d = new Demo();String ret = d.say("maven"); Assert.assertEquals("hello maven",ret);}
}
6、在project\project-java\下创建pom.xml(不要手写)
在D:\develop\apache-maven-3.9.3\lib 使用解压文件随便打开一个jar包,向上,点击查找
复制
粘贴到新建的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/maven-v4_0_0.xsd"><modelVersion>4.0.0</modelVersion><groupId>com.runa</groupId><artifactId>project-java</artifactId><version>1.0.0</version><packaging>jar</packaging><dependencies><dependency><groupId>junit</groupId><artifactId>junit</artifactId><version>4.12</version> </dependency></dependencies></project>
5.1.2 构建命令
在project\project-java\目录下(pom.xml所在目录)打开cmd
1、编译
mvn compile
2、到maven仓库查看新增了很多文件
3、当前目录下多了target文件夹
执行下面命令可清理target文件夹(这里可暂时不执行)
mvn clean
4、测试
mvn test
执行成功会新增文件
5、打包
mvn package
在test-classes里面有jar包
6、 安装
mvn install
将打包的jar存储到本地仓库
5.2 插件创建工程
cmd进到此目录
5.2.1 java工程
mvn archetype:generate -DgroupId=com.runa -DartifactId=hellojava -DarchetypeArtifactId=maven-archetype-quickstart -Dversion=0.0.1-snapshot -DinteractiveMode=false
5.2.2 web工程
mvn archetype:generate -DgroupId=com.runa -DartifactId=web-project -DarchetypeArtifactId=maven-archetype-webapp -Dversion=0.0.1-snapshot -DinteractiveMode=false
5.3 IDEA创建工程
5.3.1 配置MAVEN
1、创建一个空的项目
2、 修改sdk版本
idea-file-project struct进入文件结构---project ---project sdk:[选择你需要切换的版本]【如果没有需要的版本,需要在下面】【Platform Settings】-SDKs 中添加相应的版本
3、修改maven版本
Settings->Build ->Build tools - > maven
4、修改setting.xml配置
5.3.2 手工创建java项目
创建模块
pom.xml添加依赖
<dependencies><dependency><groupId>junit</groupId><artifactId>junit</artifactId><version>3.8.1</version><scope>test</scope></dependency></dependencies>
为test添加package com.runa
上图test下的resources是通过手工添加文件夹的类型变更也可通过这个方式改:
或者到这里加 file-project struct进入文件结构---modules
package com.runa;public class Demo {public String say(String name){System.out.println("hello " + name);return "hello " + name;}
}
package com.runa;import junit.framework.Assert;public class DemoTest {public void testSay(){Demo d = new Demo();String ret = d.say("maven");Assert.assertEquals("hello maven", ret);}
}
5.3.2.1 编译运行(方式一)
点击右侧的MAVEN--->Lifecycle 可执行编译测试等命令
5.3.2.2 编译运行(方式二推荐)
创建编译
可继续再创建clean,区别在Run 那里
5.3.3 原型创建java项目
上图2个箭头是手动创建哪个文件夹自动生成对应类型的(我的idea是2023-01版本)
5.3.4 原型创建web项目
5.3.5 插件
5.3.5.1 配置tomcat7
到坐标库搜索tomcat插件
目前maven3.8.8支持下图 3.9.3不行
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.0</modelVersion><groupId>com.runa</groupId><artifactId>web01</artifactId><packaging>war</packaging><version>1.0-SNAPSHOT</version><name>web01 Maven Webapp</name><url>http://maven.apache.org</url><dependencies><dependency><groupId>junit</groupId><artifactId>junit</artifactId><version>3.8.1</version><scope>test</scope></dependency></dependencies><!-- 构建 --><build><!-- 设置插件 --><plugins><!-- 具体插件 --><plugin><groupId>org.apache.tomcat.maven</groupId><artifactId>tomcat7-maven-plugin</artifactId><version>2.1</version></plugin></plugins></build>
</project>
查看插件,如果没有出现点击那个刷新
点击运行上图箭头
上面地址可直接访问
5.3.5.2 自定义tomcat7的端口
<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.0</modelVersion><groupId>com.runa</groupId><artifactId>web01</artifactId><packaging>war</packaging><version>1.0-SNAPSHOT</version><name>web01 Maven Webapp</name><url>http://maven.apache.org</url><dependencies><dependency><groupId>junit</groupId><artifactId>junit</artifactId><version>3.8.1</version><scope>test</scope></dependency></dependencies><!-- 构建 --><build><!-- 设置插件 --><plugins><!-- 具体插件 --><plugin><groupId>org.apache.tomcat.maven</groupId><artifactId>tomcat7-maven-plugin</artifactId><version>2.1</version><configuration><port>80</port><path>/</path></configuration></plugin></plugins></build>
</project>
5.3.5.3 做到配置
6 pom注释说明
<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"><!-- 指定pom的模型版本 --><modelVersion>4.0.0</modelVersion><!-- 打包方式, web工程打包未war java工程打包未jar --><packaging>war</packaging><!-- 组织id --><groupId>com.runa</groupId><!-- 项目id 一般项目名称 --><artifactId>web01</artifactId><!-- 版本号release(完成版) snapshot (开发版) --><version>1.0-SNAPSHOT</version><name>web01 Maven Webapp</name><url>http://maven.apache.org</url><!-- 设置工程所有依赖 --><dependencies><!-- 具体依赖 --><dependency><groupId>junit</groupId><artifactId>junit</artifactId><version>3.8.1</version><scope>test</scope></dependency></dependencies><!-- 构建 --><build><!-- 设置插件 --><plugins><!-- 具体插件 --><plugin><groupId>org.apache.tomcat.maven</groupId><artifactId>tomcat7-maven-plugin</artifactId><version>2.1</version><configuration><port>80</port><path>/</path></configuration></plugin></plugins></build>
</project>
7 依赖管理
7.1 依赖配置
7.2 依赖传递
将项目web01配置到java02的pom.xml
7.3 可选依赖
7.4 排除依赖
选择你的项目依赖位置
7.5 依赖范围
8 生命周期与插件
8.1 生命周期
8.1.1 clean 生命周期
8.1.2 default生命周期
8.1.3 site构建生命周期
8.2 插件
上官网
build部分,注意打的是test,
<?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.runa</groupId><artifactId>java01</artifactId><version>1.0-SNAPSHOT</version><properties><maven.compiler.source>17</maven.compiler.source><maven.compiler.target>17</maven.compiler.target><project.build.sourceEncoding>UTF-8</project.build.sourceEncoding></properties><dependencies><dependency><groupId>junit</groupId><artifactId>junit</artifactId><version>4.12</version><scope>test</scope></dependency><dependency><groupId>log4j</groupId><artifactId>log4j</artifactId><version>1.2.12</version></dependency></dependencies><!-- 构建 --><build><!-- 设置插件 --><plugins><!-- 具体插件 --><plugin><groupId>org.apache.maven.plugins</groupId><artifactId>maven-source-plugin</artifactId><version>2.2.1</version><executions><execution><goals><goal>jar</goal></goals><phase>generate-test-resources</phase></execution></executions></plugin></plugins></build>
</project>
相关文章:

【java】【maven】【基础】MAVEN安装配置介绍
目录 1 下载 2 安装-windows为例 3 配置环境变量 3.1 JAVA_HOME 3.2 MAVEN_HOME 3.3 PATH 3.4 验证 4 MAVEN基础概念 4.1 仓库概念 4.2 坐标概念 4.2.1 打开网址 4.2.2 输入搜索内容junit 4.2.3 找到对应API名称点击 4.2.4 点击对应版本 4.2.5 复制MAVEN坐标 4.3 配置…...

【C语言进阶】指针的高级应用(下)
文章目录 一、指针数组与数组指针1.1 指针数组与数组指针的表达式 二、函数指针2.1 函数指针的书写方式 三、二重指针与一重指针3.1 二重指针的本质3.2 二重指针的用法3.3 二重指针与数组指针 总结 一、指针数组与数组指针 (1)指针数组的实质是一个数组,这个数组中存…...

【uniapp APP隐藏顶部的电量,无线,时间状态栏与导航栏】
uniapp APP隐藏顶部的电量,无线,时间状态栏 如下代码配置(在一个页面设置这个段代码,所有页面都会消失) onShow() {// #ifdef APP-PLUS// 隐藏顶部电池,时间等信息 plus.navigator.setFullscreen(true);//隐藏虚拟按…...

微信小程序前后页面传值
微信小程序前后页面传值 从前一个页面跳转到下一个页面,如何传递参数?从后一个页面返回前一个页面,如何回调参数? 向后传值 从前一个页面跳转到下一个页面并传值。 前页面:在跳转链接中添加参数并传递 wx.navigat…...

没有jodatime,rust里怎么比较两个日期(时间)的大小呢?
关注我,学习Rust不迷路!! 在 Rust 中,比较两个日期的大小有多种方法。以下是列举的四种常见方法: 1. 使用 PartialOrd trait: use chrono::prelude::*;fn main() {let date1 NaiveDate::from_ymd(2022,…...

【雕爷学编程】Arduino动手做(186)---WeMos ESP32开发板18
37款传感器与模块的提法,在网络上广泛流传,其实Arduino能够兼容的传感器模块肯定是不止37种的。鉴于本人手头积累了一些传感器和执行器模块,依照实践出真知(一定要动手做)的理念,以学习和交流为目的&#x…...

C语言假期作业 DAY 14
一、选择题 1、有以下函数,该函数的功能是( ) int fun(char *s) {char *t s;while(*t);return(t-s); } A: 比较两个字符的大小 B: 计算s所指字符串占用内存字节的个数 C: 计算s所指字符串的长度 D: 将s所指字符串复制到字符串t中 答案解析 …...

Maven-生命周期及命令
关于本文 ✍写作原因 之前在学校学习的时候,编写代码使用的项目都是单体架构,导入开源框架依赖时只需要在pom.xml里面添加依赖,点一下reload按钮即可解决大部分需求;但是在公司使用了dubbo微服务架构之后发现只知道使用reload不足…...

常温超导:AI在研发中的潜力
目录 引言:1. 常温超导的挑战:2. AI在材料研究中的作用:3. AI在理论模型中的作用:4. AI与实验室合作的潜力:结论: 引言: 常温超导一直被认为是科学界的“圣杯”,可以在室温条件下实…...

【C++】开源:Eigen3矩阵与线性代数库配置使用
😏★,:.☆( ̄▽ ̄)/$:.★ 😏 这篇文章主要介绍Eigen3矩阵与线性代数库配置使用。 无专精则不能成,无涉猎则不能通。——梁启超 欢迎来到我的博客,一起学习,共同进步。 喜欢的朋友可以关注一下&…...

OpenMesh 网格简化算法(基于边长度)
文章目录 一、简介二、实现代码三、实现效果参考资料一、简介 网格简化的算法有很多种,基于边结构进行简化的方法便是其中一种方式。此类算法主要关注于它们如何选择要收缩的边,并且似乎都是为流形表面设计的,尽管边缘收缩也可以用于非流形表面,但往往会存在变形较大的问题…...

FFmpeg解码详细流程
介绍 FFmpeg的 libavcodec 模块完成音视频多媒体的编解码模块。老版本的 FFmpeg 将avcodec_decode_video2()作为视频的解码函数 API,将avcodec_decode_audio4()作为音频的解码函数 API;从 3.4版本开始已经将二者标记为废弃过时 API(attribut…...

人工智能的缺陷
首先从应用层面理解什么是人工智能,目前人工智能主流应用面包括:自然语言处理领域,代表为chatgpt,我们能用其进行日常交流,问题答疑,论文书写等。计算机视觉领域,代表为人脸识别,现在…...

基于ASP.NET MVC开发的、开源的个人博客系统
推荐一个功能丰富、易于使用和扩展的开源博客,可以轻松地创建和管理自己的博客。 项目简介 基于.Net Framework 4.5开发的、开源博客系统,具有丰富的功能,包括文章发布、分类、标签、评论、订阅、统计等功能,同时也可以根据需要…...

【LeetCode】对称二叉树 平衡二叉树
对称二叉树 即先判断根节点的左右子树相不相同,相同时,再判断左孩子的左子树和右孩子的右子树比较,左孩子的右子树和右孩子的左子树(当两个都相同时才是对称的).....依次递推,过程中并设置一些不满足相同的…...

区块链和WEB3.0有哪些基础知识呢
区块链基础知识 常用区块链基础知识包括: (1)区块链概念:区块链是一种去中心化的分布式账本技术,它通过加密算法和共识机制保证了数据的安全性和不可篡改性。区块链中的每一个区块都包含了前一个区块的哈希值&#x…...

七、封装(1)
本章概要 包的概念 代码组织创建独一无二的包名冲突定制工具库使用 import 改变行为使用包的忠告 访问控制(Access control)(或者_隐藏实现(implementation hiding)_)与“最初的实现不恰当”有关。 所有优…...

问题解决和批判性思维是软件工程的重要核心
软件工程的重心在于问题解决和批判性思维(合理设计和架构降低复杂度),而非仅局限于编程。 许多人误以为软件工程就只是编程,即用编程语言编写指令,让计算机按照这些指令行事。但实际上,软件工程的内涵远超…...

【EI/SCOPUS征稿】2023年通信网络与机器学习国际学术会议(CNML 2023)
2023年通信网络与机器学习国际学术会议(CNML 2023) 2023 International Conference on Communication Networks and Machine Learning 随着数据流量的显著增长,新的通信应用程序不断出现,并产生更多的数据流量,这些数…...

算法-岛屿数量
给你一个由 1(陆地)和 0(水)组成的的二维网格,请你计算网格中岛屿的数量。 岛屿总是被水包围,并且每座岛屿只能由水平方向和/或竖直方向上相邻的陆地连接形成。 此外,你可以假设该网格的四条边…...

Crescent QuickPak Crack
Crescent QuickPak Crack Crescent QuickPak是一个32位ActiveX组件的综合集合,用于使用Visual Basic开发应用程序,这将减少开发时间并提高生产力。Crescent QuickPak包含Internet功能,用于打开、读取和解析IIS日志文件,将日志文件…...

六、ESP32数码管显示数字
1. 本节课的成功 2. 数码管 为什么会亮呢? 答:里面就是LED灯...

【Kubernetes】当K8s出现问题时,从哪些方面可以排查
前言 kubernetes,简称K8s,是用8代替名字中间的8个字符“ubernete”而成的缩写。是一个开源的,用于管理云平台中多个主机上的容器化的应用,Kubernetes的目标是让部署容器化的应用简单并且高效(powerful),Kub…...

[ MySQL ] — 库和表的操作
目录 库的操作 创建数据库 语法: 使用: 字符集和校验规则 查看系统默认字符集以及校验规则 查看数据库支持的字符集 查看数据库支持的字符集校验规则 校验规则对数据库的影响 操纵数据库 查看数据库 显示创建语句 修改数据库 删除数据库 备…...

Hive常见面试题
Hive的基本概念 什么是Hive?它的主要作用是什么? Hive是一个基于Hadoop生态系统的数据仓库和数据处理工具。 它提供了类似于SQL的查询语言(HiveQL),使用户能够使用SQL语句来查询和分析 大规模存储在Hadoop集群上的数…...

【单片机】晨启科技,酷黑版,密码锁
密码锁 任务要求: 当输入密码(至少6位密码)时,OLED显示屏显示输入的数字(或者字符),当密码位数输入完毕按下确认键时,对输入的密码与设定的密码进行比较(可使用外设键盘&…...

常见监控网络链路和网络设备的方法
网络监控主要包括网络链路监控和网络设备监控,通常系统运维人员会比较关注。 一、网络链路监控 网络链路监控主要包含三个部分,网络连通性、网络质量、网络流量。 连通性和质量的监控手段非常简单,就是在链路一侧部署探针,去探…...

C#控制台程序+Window增加右键菜单
有时候我们可能会想定制一些自己的右键菜单功能,帮我们减少重复的操作。那么使用控制台程序加自定义右键菜单,就可以很好地满足我们的需求。 1 编写控制台程序 因为我只用到了在文件夹中空白处的右键菜单,所以这里提供了一个对应的模板&…...

【Docker】Docker+Zipkin+Elasticsearch+Kibana部署分布式链路追踪
文章目录 1. 组件介绍2. 服务整合2.1. 前提:安装好Elaticsearch和Kibana2.2. 再整合Zipkin 点击跳转:Docker安装MySQL、Redis、RabbitMQ、Elasticsearch、Nacos等常见服务全套(质量有保证,内容详情) 本文主要讨论在Ela…...

【小沐学C++】C++ 基于CMake构建工程项目(Windows、Linux)
文章目录 1、简介2、下载cmake3、安装cmake4、测试cmake4.1 单个源文件4.2 同一目录下多个源文件4.3 不同目录下多个源文件4.4 标准组织结构4.5 动态库和静态库的编译4.6 对库进行链接4.7 添加编译选项4.8 添加控制选项 5、构建最小项目5.1 新建代码文件5.2 新建CMakeLists.txt…...