简单了解Maven与安装

news2024/9/21 13:56:45

Maven

1.Maven 简介

Maven 是 Apache 软件基金会(国外组织,专门维护开源项目)的一个开源项目,

是一个优秀的项目构建工具,

它用来帮助开发者管理项目中的 jar,

以及 jar 之间的依赖关系(在A.jar文件中用到了B.jar)、

完成项目的编译(把.java文件 编译为 .jar文件)、测试、打包和发布等工作。

(JAR文件是Java ARchive的缩写,是一种Java程序的归档文件格式。

它可以包含Java类、相关资源文件、库文件和元数据。

JAR文件通常被用来打包和分发Java应用程序或库,可以通过Java虚拟机(JVM)进行执行。

JAR文件是一种方便的方式来组织和传递Java程序,也常用于在网络上分发Java应用。)

如何管理?

maven将常用的jar收集起来,在他的服务器上存储,

每个jar都有一个独一无二的地址。

我们在开发期间,将jar包的地址配置在项目配置文件中即可,

借助maven就可以自动去官方下载jar文件到本地。

Maven 中的概念

pom(Project Object Model 项目对象模型)

Maven 管理的项目的根目录下都有一个 pom.xml 文件。

pom.xml 文件指示 Maven 如何工作。

在 pom.xml 文件中配置项目基本信息以及项目构建信息等。比如:项目坐标、项目依赖的 jar、插件、编译选项等。

一旦在 pom.xml 文件中配置了所依赖的 jar,Maven 会自动从构件仓库中下载相应的构件。

坐标

Maven 给每个 jar 定义了唯一的标志,这个在 Maven 中叫做项目的坐标,通过这个坐标可以找到你需要 用到的任何版本的 jar 包。

groupId、artifactId、packaging、version 的组合被称为项目的坐标,它们形成了项目的唯一标识,Maven 通过坐标来精确定位构件。其中 groupId、artifactId、version 是必须的,且这三项的值必须唯一,packaging 是可选的(默认为 jar)。

仓库

中央仓库全球共享,

先将 jar 从中央仓库下载到本地仓库,

然后在项目中引用本地仓库的 jar.

在项目中使用

2.Maven 开发环境搭建:

前提

安装 jdk

Maven 工作时需要通过网络下载各种插件以完成任务,因此应保证网络的通畅

2.1 下载 Maven 服务器

Maven 官网:http:// maven .apache. org

点击 download 进行下载如下图

2.2 安装,配置 Maven

点击下载二进制的 apache-maven -3.6.0-bin.zip 进行解压,”然后在系统环境中配置环境变量,在path中配置到bin目录,配置成功后输入命令mvn -version

表示 Maven 环境配置成功。

配置本地仓库地址

接下来根据情况在本地磁盘中建立通过 Maven 下载后 jar 文件所存储的文件夹,一般我们称为”仓库(repository)”;最终是如何将下载的 jar 文件存储到我们指定的仓库中呢?需要在 Maven 的服务器解压的文件中找到 conf 文件夹下的 settings.xml 文件进行修改,如下图所示:

配置阿里云 Maven 镜像仓库,下载速度更快

<mirror>

<id>aliMaven </id>

<name>aliyun Maven </name>

<url>http://Maven.aliyun.com/nexus/content/groups/public/</url>

<mirrorOf>central</mirrorOf>

</mirror>

2.3idea 中设置 Maven

2.4 创建 Maven 工程

pom.xml 配置

pom.xml 文件基本结构

1.项目基本信息

<modelVersion>4.0.0</modelVersion>

<groupId>org.example</groupId>

<artifactId>test</artifactId>

<version>1.0-SNAPSHOT</version>

2.指定编译时使用的 jdk 版本

<properties>

<maven.compiler.source>1.8</maven.compiler.source> <!-- 设置 Java 源代码兼容性 -->

<maven.compiler.target>1.8</maven.compiler.target> <!-- 设置编译的目标 JVM 版本 -->

</properties>

3.依赖信息

<dependencies>

<!--mysql-->

<dependency>

<groupId>mysql</groupId>

<artifactId>mysql-connector-java</artifactId>

<version>8.0.16</version>

</dependency>

</dependencies>

Maven 仓库官网(http://mvnrepository.com/)如下图所示:

在此官网就可以下载自己所需开发 jar 包,继续点击链接打开如下:

  1. 构建信息

<build>...</build>

4.Maven 命令

Maven 常用命令

  1. clean 删除编译的 target

  2. compile 编译

  3. package 打包

  4. install 安装 package 和 install都能打包

package 和 install 区别:

package打包在工程里

install打包在本地仓库里

5.打包 javaSE 项目案例

添加打包依赖

<build>

<plugins>

<plugin>

<groupId>org.apache.maven.plugins</groupId>

<artifactId>maven-assembly-plugin</artifactId>

<configuration>

<descriptorRefs>

<!--**给 jar 包起的别名**-->

<descriptorRef>jar-with-dependencies</descriptorRef>

</descriptorRefs>

<archive>

<manifest>

<addClasspath>true</addClasspath>

<classpathPrefix>lib/</classpathPrefix>

<!--**添加项目中主类**-->

<mainClass>com.ffyc.chatrom.client.frame.Run</mainClass>

</manifest>

</archive>

</configuration>

<executions>

<execution>

<id>make-assembly</id>

<phase>package</phase>

<goals>

<goal>single</goal>

</goals>

</execution>

</executions>

</plugin>

</plugins>

</build>

执行 maven 命令

生成 jar

复制出 jar 包,到桌面.

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

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

相关文章

圆环加载效果

效果预览 代码实现 from PyQt5.QtCore import QSize, pyqtProperty, QTimer, Qt, QThread, pyqtSignal from PyQt5.QtGui import QColor, QPainter from PyQt5.QtWidgets import QApplication, QWidget, QHBoxLayout, QPushButton, QVBoxLayout, QLabel, QGridLayoutclass Cir…

Rust使用Actix-web和SeaORM库开发WebAPI通过Swagger UI查看接口文档

本文将介绍Rust语言使用Actix-web和SeaORM库&#xff0c;数据库使用PostgreSQL&#xff0c;开发增删改查项目&#xff0c;同时可以通过Swagger UI查看接口文档和查看标准Rust文档 开始项目 首先创建新项目&#xff0c;名称为rusty_crab_api cargo new rusty_crab_apiCargo.t…

Nuxt Kit 中的页面和路由管理

title: Nuxt Kit 中的页面和路由管理 date: 2024/9/17 updated: 2024/9/17 author: cmdragon excerpt: 摘要:本文介绍了Nuxt Kit中页面和路由管理的高级功能,包括extendPages自定义页面路由、extendRouteRules定义复杂路由逻辑及addRouteMiddleware注册路由中间件。通过这…

Html css样式总结

1.Html css样式总结 1.1. 定位position 布局是html中非常重要的一部分&#xff0c;而定位在页面布局中也是使用频率很高的方法&#xff0c;本章节为定位在布局中的使用技巧和注意事项。   position定位有4个属性&#xff0c;分别是static(默认&#xff09;&#xff0c;absol…

第四天旅游线路预览——从换乘中心到白哈巴村

第四天&#xff1a;从贾登峪到喀纳斯风景区入口&#xff0c;晚上住宿贾登峪&#xff1b; 换乘中心有4 路车&#xff0c;喀纳斯③号车&#xff0c;去白哈巴村&#xff0c;路程时长约40分钟&#xff1b; 将上面的的行程安排进行动态展示&#xff0c;具体步骤见”Google earth st…

用Spring Boot搭建的读书笔记分享平台

第1章 绪论 1.1课题背景 计算机的普及和互联网时代的到来使信息的发布和传播更加方便快捷。用户可以通过计算机上的浏览器访问多个应用系统&#xff0c;从中获取一些可以满足用户需求的管理系统。网站系统有时更像是一个大型“展示平台”&#xff0c;用户可以选择所需的信息进入…

【Spring Security系列】如何用Spring Security集成手机验证码登录?五分钟搞定!

作者&#xff1a;后端小肥肠 &#x1f347; 我写过的文章中的相关代码放到了gitee&#xff0c;地址&#xff1a;xfc-fdw-cloud: 公共解决方案 &#x1f34a; 有疑问可私信或评论区联系我。 &#x1f951; 创作不易未经允许严禁转载。 姊妹篇&#xff1a; 【Spring Security系列…

拖拽排序的实现示例demo

拖拽排序的实现示例demo 文章说明核心代码示例效果展示 文章说明 文章主要为了学习拖拽排序的实现思路&#xff0c;并且采用此示例效果来进一步理解Flip动画的使用 参考渡一前端袁老师的讲解视频 核心代码 页面源码&#xff0c;拖拽排序的实现代码并不复杂&#xff0c;但是可以…

我的标志:奇特的头像

<!DOCTYPE html> <html lang"zh-CN"> <head><meta charset"UTF-8"><meta name"viewport" content"widthdevice-width, initial-scale1.0"><title>与妖为邻</title><style>figure.log…

C++11(4)

万众瞩目的C11特辑来了&#xff0c;本章将继续讲解C11更新的内容&#xff0c;不过C11的内容也快接近尾声了。 目录 10。lambda表达式 11。lambda捕捉列表[] 捕捉列表说明 lambda捕捉列表实际应用 10。lambda表达式 #include<iostream> using namespace std; #inclu…

手把手教你:在微信小程序中加载map并实现拖拽添加标记定位

本文将为大家详细介绍如何在微信小程序中加载map组件&#xff0c;并实现拖拽标记定位功能。 实现步骤 1、首先&#xff0c;我们需要在项目的app.json文件中添加map组件的相关配置。如下所示&#xff1a; {"pages": ["pages/index/index"],"permiss…

robomimic基础教程(三)——自带算法

robomimic自带几个高质量的离线学习算法的实现&#xff0c;包括模仿学习和强化学习&#xff0c;并提供相关工具来辅助你轻松构建自己的学习算法。 一、模仿学习&#xff08;Imitation Learning&#xff09; 1. BC (Behavioral Cloning) Vanilla Behavioral Cloning, 旨在通过…

使用knn算法对iris数据集进行分类

程序功能 使用 scikit-learn 库中的鸢尾花数据集&#xff08;Iris dataset&#xff09;&#xff0c;并基于 KNN&#xff08;K-Nearest Neighbors&#xff0c;K近邻&#xff09;算法进行分类&#xff0c;最后评估模型的准确率。 代码 from sklearn import datasets# 加载鸢尾…

链表在开空间时候出现的问题

题目&#xff1a; 第一种写法完整答案&#xff1a; 第二种写法完整答案&#xff1a;

【机器学习】--- 自监督学习

1. 引言 机器学习近年来的发展迅猛&#xff0c;许多领域都在不断产生新的突破。在监督学习和无监督学习之外&#xff0c;自监督学习&#xff08;Self-Supervised Learning, SSL&#xff09;作为一种新兴的学习范式&#xff0c;逐渐成为机器学习研究的热门话题之一。自监督学习…

【C++题解】1996. 每个小组的最大年龄

欢迎关注本专栏《C从零基础到信奥赛入门级&#xff08;CSP-J&#xff09;》 问题&#xff1a;1996. 每个小组的最大年龄 类型&#xff1a;二维数组 题目描述&#xff1a; 同学们在操场上排成了一个 n 行 m 列的队形&#xff0c;每行的同学属于一个小组&#xff0c;请问每个小…

PCIe进阶之TL:Completion Rules TLP Prefix Rules

1 Completion Rules & TLP Prefix Rules 1.1 Completion Rules 所有的 Read、Non-Posted Write 和 AtomicOp Request 都需要返回一个 Completion。Completion 有两种类型:一种带数据负载的,一种不带数据负载的。以下各节定义了 Completion header 中每个字段的规则。 C…

【磨皮美白】基于Matlab的人像磨皮美白处理算法,Matlab处理

博主简介&#xff1a;matlab图像代码项目合作&#xff08;扣扣&#xff1a;3249726188&#xff09; ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 本次案例是基于Matlab的图像磨皮美白处理&#xff0c;用matlab实现。 一、案例背景和算法介绍 …

【图像匹配】基于SURF算法的图像匹配,matlab实现

博主简介&#xff1a;matlab图像代码项目合作&#xff08;扣扣&#xff1a;3249726188&#xff09; ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 本次案例是基于基于SURF算法的图像匹配&#xff0c;用matlab实现。 一、案例背景和算法介绍 前…

7天速成前端 ------学习日志 (继苍穹外卖之后)

前端速成计划总结&#xff1a; 全26h课程&#xff0c;包含html&#xff0c;css&#xff0c;js&#xff0c;vue3&#xff0c;预计7天内学完。 起始日期&#xff1a;9.16 预计截止&#xff1a;9.22 每日更新&#xff0c;学完为止。 学前计划 课…