【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(水)组成的的二维网格,请你计算网格中岛屿的数量。 岛屿总是被水包围,并且每座岛屿只能由水平方向和/或竖直方向上相邻的陆地连接形成。 此外,你可以假设该网格的四条边…...
生成xcframework
打包 XCFramework 的方法 XCFramework 是苹果推出的一种多平台二进制分发格式,可以包含多个架构和平台的代码。打包 XCFramework 通常用于分发库或框架。 使用 Xcode 命令行工具打包 通过 xcodebuild 命令可以打包 XCFramework。确保项目已经配置好需要支持的平台…...
零门槛NAS搭建:WinNAS如何让普通电脑秒变私有云?
一、核心优势:专为Windows用户设计的极简NAS WinNAS由深圳耘想存储科技开发,是一款收费低廉但功能全面的Windows NAS工具,主打“无学习成本部署” 。与其他NAS软件相比,其优势在于: 无需硬件改造:将任意W…...
Frozen-Flask :将 Flask 应用“冻结”为静态文件
Frozen-Flask 是一个用于将 Flask 应用“冻结”为静态文件的 Python 扩展。它的核心用途是:将一个 Flask Web 应用生成成纯静态 HTML 文件,从而可以部署到静态网站托管服务上,如 GitHub Pages、Netlify 或任何支持静态文件的网站服务器。 &am…...
论文浅尝 | 基于判别指令微调生成式大语言模型的知识图谱补全方法(ISWC2024)
笔记整理:刘治强,浙江大学硕士生,研究方向为知识图谱表示学习,大语言模型 论文链接:http://arxiv.org/abs/2407.16127 发表会议:ISWC 2024 1. 动机 传统的知识图谱补全(KGC)模型通过…...
三体问题详解
从物理学角度,三体问题之所以不稳定,是因为三个天体在万有引力作用下相互作用,形成一个非线性耦合系统。我们可以从牛顿经典力学出发,列出具体的运动方程,并说明为何这个系统本质上是混沌的,无法得到一般解…...
【C语言练习】080. 使用C语言实现简单的数据库操作
080. 使用C语言实现简单的数据库操作 080. 使用C语言实现简单的数据库操作使用原生APIODBC接口第三方库ORM框架文件模拟1. 安装SQLite2. 示例代码:使用SQLite创建数据库、表和插入数据3. 编译和运行4. 示例运行输出:5. 注意事项6. 总结080. 使用C语言实现简单的数据库操作 在…...
处理vxe-table 表尾数据是单独一个接口,表格tableData数据更新后,需要点击两下,表尾才是正确的
修改bug思路: 分别把 tabledata 和 表尾相关数据 console.log() 发现 更新数据先后顺序不对 settimeout延迟查询表格接口 ——测试可行 升级↑:async await 等接口返回后再开始下一个接口查询 ________________________________________________________…...
人工智能--安全大模型训练计划:基于Fine-tuning + LLM Agent
安全大模型训练计划:基于Fine-tuning LLM Agent 1. 构建高质量安全数据集 目标:为安全大模型创建高质量、去偏、符合伦理的训练数据集,涵盖安全相关任务(如有害内容检测、隐私保护、道德推理等)。 1.1 数据收集 描…...
提升移动端网页调试效率:WebDebugX 与常见工具组合实践
在日常移动端开发中,网页调试始终是一个高频但又极具挑战的环节。尤其在面对 iOS 与 Android 的混合技术栈、各种设备差异化行为时,开发者迫切需要一套高效、可靠且跨平台的调试方案。过去,我们或多或少使用过 Chrome DevTools、Remote Debug…...
Visual Studio Code 扩展
Visual Studio Code 扩展 change-case 大小写转换EmmyLua for VSCode 调试插件Bookmarks 书签 change-case 大小写转换 https://marketplace.visualstudio.com/items?itemNamewmaurer.change-case 选中单词后,命令 changeCase.commands 可预览转换效果 EmmyLua…...
