Maven的理解与应用

Maven使用

一、Maven的含义

Maven是一个构建项目的工具,也是一个管理项目的工具

二、Maven的应用
  • 构建项目

  • 管理依赖

  • 做项目的热部署

  • 基于项目做多模块(modle)的构建

三、Maven的安装

注意:maven本身不需要安装,下载解压就可以了

  1. 配置环境变量

变量名路径
M2_HOMEC:\apache-maven-3.6.0
Path%M2_HOME%\bin
  1. 验证是否配置成功

打开cmd输入mvn -version

四、使用命令操作Java项目
4.1 创建Java项目
  1. 进入工作空间,取名(xxxMavenWorkspace)

  1. cd C:\MavenWorkspace 进入到此目录

  1. 输入命令来找模板 mvn archetype:generate

  1. 默认出现10个常见的模板 默认选择的是 7号模板(用来创建 java项目org.apache.maven.archetypes:maven-archetype-quickstart)

  1. 填写groupId -- 组别(今天你的认为就是包名)

  1. 填写 artifactId -- 项目名

  1. 填写 version -- 版本号(这个直接默认就好,一般情况下不改)

  1. 填写 package -- 包名(默认是groupId,这里默认就好)

  1. 输入 Y (确定)

  2. 构建项目

4.2 项目目录解析

MavenWorkspace\JavaTest01\src

MavenWorkspace\JavaTest01\src\main

C:\MavenWorkspace\JavaTest01\src\main\java -- 存放java源文件

C:\MavenWorkspace\JavaTest01\src\test -- 存放测试文件

MavenWorkspace\JavaTest01\pom.xml -- 插件管理、项目的依赖管理、整个项目自己的坐标

4.3 运行项目
  1. cd C:\MavenWorkspace\JavaTest01 进入此目录

  1. mvn package项目打包,此时会在项目根目录中生产target文件夹

  1. cd C:\MavenWorkspace\JavaTest01\target 进入此目录

  1. java -cp JavaTest01-1.0-SNAPSHOT.jar com.dream.test01.App 运行代码

注意:

mvn clean-----清空target文件

mvn install :打包并将这个jar文件放到本地仓库(管理jar文件的本地库)

mvn test:运行所有的测试用例

五、使用命令操作JavaWeb项目
5.1 创建JavaWeb项目
  1. 进入工作空间,取名(xxxMavenWorkspace)

  1. cd C:\MavenWorkspace 进入到此目录

  1. 输入命令来找模板 mvn archetype:generate

  1. 选择10号模板(用来创建Web项目org.apache.maven.archetypes:maven-archetype-webapp)

  1. 填写groupId -- 组别(今天你的认为就是包名)

  1. 填写 artifactId -- 项目名

  1. 填写 version -- 版本号(这个直接默认就好,一般情况下不改)

  1. 填写 package -- 包名(默认是groupId,这里默认就好)

  1. 输入 Y (确定)

  2. 构建项目

5.2 项目目录解析

MavenWorkspace\WebTest01\src

MavenWorkspace\WebTest01\src\main

MavenWorkspace\WebTest01\src\main\resources存放资源文件

MavenWorkspace\WebTest01\src\main\webapp 存放前端资源和web.xml

C:\MavenWorkspace\WebTest01\pom.xml 插件管理、项目的依赖管理、整个项目自己的坐标

注意:mvn package项目打包,此时会在项目根目录中生产target文件夹

六、在IDEA中配置Maven
  1. 配置maven的国内仓库/中央仓库

位置:C:\apache-maven-3.6.0\conf\settings.xml

<mirrors>
​
<!--
​<mirror>
​<id>mirrorId</id>
​<mirrorOf>repositoryId</mirrorOf>
​<name>Human Readable Name for this Mirror.</name>
​<url>http://my.repository.com/repo/path</url>
​</mirror>
​
-->
​<mirror>
​<id>alimaven</id>
​<name>aliyun maven</name>
​<url>http://maven.aliyun.com/nexus/content/groups/public/</url>
​<mirrorOf>central</mirrorOf>    
​</mirror>
​
</mirrors>
​
​
  1. 配置maven的本地仓库

    位置:C:\apache-maven-3.6.0\conf\settings.xml

    <!-- 
    ​localRepository
    ​| The path to the local repository maven will use to store artifacts.
    ​|
    ​| Default: ${user.home}/.m2/repository
    ​<localRepository>/path/to/local/repo</localRepository>
    ​
    -->
    ​<localRepository>C:\.m2\repository</localRepository>

  2. 在IDEA中配置Maven -- File--> Setting

七、 在IDEA中操作Java项目

八、在IDEA中操作Web项目

其余步骤用上

解析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>
​<!--项目坐标-->
​<groupId>com.dream.test01</groupId>
​<artifactId>WebTest02</artifactId>
​<version>1.0-SNAPSHOT</version>
​<packaging>war</packaging>
​<!--
​
•     <packaging>jar</packaging>打包的时候打包成jar文件 - Java项目
​
•     <packaging>war</packaging>打包的时候打包成war文件 - Web项目
​
•     <packaging>pom</packaging>不打包,表示聚合项目工程
​-->
​​<name>WebTest02 Maven Webapp</name>
​<!-- FIXME change it to the project's website -->
​<url>http://www.example.com</url>
​​<properties>
​<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
​<maven.compiler.source>1.8</maven.compiler.source>
​<maven.compiler.target>1.8</maven.compiler.target>
​</properties>
​​<!--项目的jar依赖-->
​<dependencies>
​<dependency>
​<groupId>junit</groupId>
​<artifactId>junit</artifactId>
​<version>4.11</version>
​<scope>test</scope><!--表示在测试的时候有效-->
​</dependency>
​​<!-- https://mvnrepository.com/artifact/javax.servlet/javax.servlet-api -->
​<dependency>
​<groupId>javax.servlet</groupId>
​<artifactId>javax.servlet-api</artifactId>
​<version>4.0.1</version>
​<scope>provided</scope><!--表示在编译和测试过程中有效,最后生成的war包时不会加入-->
​</dependency>
​</dependencies>
​​<!--项目的构建的时候使用的信息-->
​<build>
​<finalName>WebTest02</finalName>
​</build>
​
</project>

注意:编写java代码的位置问题

在web项目中对的src/main中创建java并设置成源码文件夹

九、在IDEA中操作聚合项目(父工程项目/多模块构建)

其余步骤同上

目录解析:

创建子级工程:

右键父级工程 --> new --> moudle---后面的步骤和创建单个工程一样

使用maven构建项目的时候 需要先找模板 通过模板来创建 项目

十.聚合项目中工程之间相互引用

含义:在一个子级工程中引用另一个子级工程中的资源

在子级工程pom.xml中配置另一个子级工程的项目坐标

<dependencies>
​<dependency>
​<artifactId>StudentManagerSystemPojo</artifactId>
​<groupId>com.dream.test01</groupId>
​<version>1.0-SNAPSHOT</version>
​</dependency>
​
<dependencies>
十一、Maven管理项目依赖

含义:在Maven仓库中寻找Jar包

仓库分类:

本地仓库:本地的一个文件夹,用来存放所有的jar包,由自己维护 远程仓库(或私服):由公司或单位创建的一个仓库,由公司维护 中央仓库:互联网上的仓库,由Maven团队维护(国内一般设计阿里云为中央仓库,下载jar更快)

寻找流程:本地仓库 --> 远程仓库(或私服) --> 中央仓库

导包流程:

  1. https://mvnrepository.com查询jar包描述

  2. 在项目pom.xml中配置jar包描述,IDEA将jar包下载到本地仓库即可

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

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

相关文章

机器学习笔记:门控循环单元的建立

目录 介绍 结构 模型原理 重置门与更新门 候选隐状态 输出隐状态 模型实现 引入数据 初始化参数 定义模型 训练与预测 简洁实现GRU 思考 介绍 门控循环单元&#xff08;Gated Recurrent Unit&#xff0c;简称GRU&#xff09;是循环神经网络一种较为复杂的构成形式…

【网络编程】UDP通信基础模型实现

udpSer.c #include<myhead.h> #define SER_IP "192.168.119.143" #define SER_PORT 7777 int main(int argc, const char *argv[]) {//1.创建int sfd socket(AF_INET,SOCK_DGRAM,0);if(sfd -1){perror("socket error");return -1;}//2.连接struct…

element-ui周选择器,如何获取年、周、起止日期?

说明 版本&#xff1a;vue2、element-ui2.15.14 element-ui的日期选择器可以设为周&#xff0c;即typeweek&#xff0c;官方示例如下&#xff1a; 如果你什么都不操作&#xff0c;那么获取的周的值为&#xff1a; value1: Tue Aug 06 2024 00:00:00 GMT0800 (中国标准时间)如…

asp.net医院权限管理系统

医院管理的设计与实现程序 医院管理系统asp.netsqlserver 医院权限管理系统sqlserver 挂号管理 挂号类型管理 挂号登记 挂号查询 药品管理 计量单位管理药 品分类管理 药品编辑 病人资料 病人资料录入 病人资料编辑 病人资料查询 住院管理 住院登记 住院查询办理出院 病例管理 …

鸿蒙HarmonyOS开发:如何灵活运用动画效果提升用户体验

文章目录 一、动画概述1、动画的目的 二、显式动画 (animateTo)1、接口2、参数3、AnimateParam对象说明4、示例5、效果 三、属性动画 (animation)1、接口2、参数3、AnimateParam对象说明4、系统可动画属性4、示例5、效果 一、动画概述 动画的原理是在一个时间段内&#xff0c;…

HAProxy原理及实例

目录 目录 haproxy简介 haproxy的基本信息 haproxy下载并查看版本 haproxy的基本配置信息 global配置 ​编辑多进程和多线程 启用多进程 启用多线程 haproxy开启多线程和多进程有什么用 proxies配置 defaults frontend backend listen socat工具 实例&#xff1a…

Particle Swarm Optimization粒子群算法

目录 1.粒子群算法入门 1.1 简单的优化问题 1.1.1 盲目搜索 1.1.2 粒子群算法流程图 1.1.3 粒子群算法的核心公式 1.1.4 预设参数 1.1.5 初始化粒子的位置和速度 1.1.6 计算适应度 1.1.7 循环体&#xff1a;更新粒子速度和位置 1.1.8 模型改进 2.深入研究粒子群算法 …

CLEFT 基于高效大语言模型和快速微调的语言-图像对比学习

CLEFT: Language-Image Contrastive Learning with Efficient Large Language Model and Prompt Fine-Tuning github.com paper CLEFT是一种新型的对比语言图像预训练框架&#xff0c;专为医学图像而设计。它融合了医学LLM的预训练、高效微调和提示上下文学习&#xff0c;展…

【Linux】线程同步与互斥

目录 线程相关问题 线程安全 常见的线程安全的情况 常见的线程不安全的情况 可重入函数与不可重入函数 常见不可重入的情况 常见可重入的情况 可重入与线程安全的关系 联系 区别 线程同步与互斥 互斥锁 使用 死锁 死锁的四个必要条件 如何避免死锁 条件变量 同…

Unity读取Android外部文件

最近近到个小需求,需要读Android件夹中的图片.在这里做一个记录. 首先读写部分,这里以图片为例子: 一读写部分 写入部分: 需要注意的是因为只有这个地址支持外部读写,所以这里用到的地址都以 :Application.persistentDataPath为地址起始. private Texture2D __CaptureCamera…

【JavaEE】初步认识多线程

&#x1f525;个人主页&#xff1a; 中草药 &#x1f525;专栏&#xff1a;【Java】登神长阶 史诗般的Java成神之路 &#x1f3b7; 一.线程 1.概念 线程&#xff08;Thread&#xff09;是在计算机科学中&#xff0c;特别是操作系统领域里的一个关键概念。它是操作系统能够进行…

Android中的Binder

binder是Android平台的一种跨进程通信&#xff08;IPC&#xff09;机制&#xff0c;从应用层角度来说&#xff0c;binder是客户端和服务端进行通信的媒介。 ipc原理 ipc通信指的是两个进程之间交换数据&#xff0c;如图中的client进程和server进程。 Android为每个进程提供了…

【聚类算法】

聚类算法是一种无监督学习方法&#xff0c;用于将数据集中的数据点自动分组到不同的类别中&#xff0c;这些类别也称为“簇”或“群”。聚类的目标是让同一簇内的数据点尽可能相似&#xff0c;而不同簇之间的数据点尽可能不相似。聚类算法广泛应用于多种领域&#xff0c;如数据…

xtrabackup搭建MySQL 8.0 主从复制

xtrabackup搭建MySQL 8.0 主从复制 安装MySQL 8.0.37安装xtrabackupGTIDs初始化从库参考&#xff1a;GTID概述GTID相较与传统复制的优势GTID自身存在哪些限制GTID工作原理简单介绍如何开启GTID复制GTID与传统模式建立复制时候语句的不同点传统复制GTID复制 GTID同步状态简单解析…

Linux系统编程 day09 线程同步

Linux系统编程 day09 线程同步 1.互斥锁2.死锁3.读写锁4.条件变量&#xff08;生产者消费者模型&#xff09;5.信号量 1.互斥锁 互斥锁是一种同步机制&#xff0c;用于控制多个线程对共享资源的访问&#xff0c;确保在同一时间只有一个线程可以访问特定的资源或执行特定的操作…

机器学习第一课

1.背景 有监督学习&#xff1a;有标签&#xff08;连续变量&#xff08;回归问题&#xff1a;时间序列等&#xff09;、分类变量&#xff08;分类&#xff09;&#xff09; 无监督学习&#xff1a;没有标签&#xff08;聚类、关联&#xff08;相关性分析&#xff1a;哪些相关…

代码随想录算法训练营Day35 | 01背包问题 | 416. 分割等和子集

今日任务 01背包问题 题目链接&#xff1a; https://kamacoder.com/problempage.php?pid1046题目描述&#xff1a; Code #include <iostream> #include <vector> #include <functional> #include <algorithm>using namespace std;int main(void)…

工作随记:我在OL8.8部署oracle rac遇到的问题

文章目录 一、安装篇问题1&#xff1a;[INS-08101] Unexpected error while executing the action at state:supportedosCheck问题1解决办法&#xff1a;问题2&#xff1a;[INS-06003] Failed to setup passwordless SSH connectivity with thefollowing nodeis): [xxxx1, xxxx…

go语言后端开发学习(四) —— 在go项目中使用Zap日志库

一.前言 在之前的文章中我们已经介绍过如何使用logrus包来作为我们在gin框架中使用的日志中间件&#xff0c;而今天我们要介绍的就是我们如何在go项目中如何集成Zap来作为日志中间件 二.Zap的安装与快速使用 和安装其他第三方包没什么区别&#xff0c;我们下载Zap包只需要执…

pod详解 list-watch机制 预选优选策略 如何指定节点调度pod

K8S是通过 list-watch 机制实现每个组件的协同工作 controller-manager、scheduler、kubelet 通过 list-watch 机制监听 apiserver 发出的事件&#xff0c;apiserver 也会监听 etcd 发出的事件 scheduler的调度策略&#xff1a; 预选策略&#xff08;Predicates&#xff09;…