当前位置: 首页 > news >正文

简单了解Maven与安装

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 包,到桌面.

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • 加密与安全_优雅存储二要素(AES-256-GCM )
  • 【redis】常用数据类型及命令
  • mongoDB-1
  • JavaEE: 深入探索TCP网络编程的奇妙世界(一)
  • 半导体制造技术中的沉积和驱入(Deposition and drive-in)过程
  • C语言字符串学习
  • linux 双网卡服务器突然断电后网卡单通故障解决
  • 力扣(LeetCode)每日一题 2848. 与车相交的点
  • 前端框架对比和选择
  • 优数:助力更高效的边缘计算
  • VirtualBox Install MacOS
  • 栈的各种接口的实现(C)
  • Antd框架中的Select组件placeholder不显示
  • React——点击事件函数调用问题
  • 常见的泛型集合
  • [笔记] php常见简单功能及函数
  • 【挥舞JS】JS实现继承,封装一个extends方法
  • Docker: 容器互访的三种方式
  • Hexo+码云+git快速搭建免费的静态Blog
  • Lucene解析 - 基本概念
  • Mysql优化
  • Redis学习笔记 - pipline(流水线、管道)
  • Sequelize 中文文档 v4 - Getting started - 入门
  • spring + angular 实现导出excel
  • 从setTimeout-setInterval看JS线程
  • 构建二叉树进行数值数组的去重及优化
  • 精益 React 学习指南 (Lean React)- 1.5 React 与 DOM
  • 前端存储 - localStorage
  • 前端技术周刊 2019-02-11 Serverless
  • 嵌入式文件系统
  • 微信端页面使用-webkit-box和绝对定位时,元素上移的问题
  •  一套莫尔斯电报听写、翻译系统
  • 【干货分享】dos命令大全
  • 策略 : 一文教你成为人工智能(AI)领域专家
  • ​渐进式Web应用PWA的未来
  • # Redis 入门到精通(一)数据类型(4)
  • #HarmonyOS:软件安装window和mac预览Hello World
  • (2)STM32单片机上位机
  • (day6) 319. 灯泡开关
  • (floyd+补集) poj 3275
  • (php伪随机数生成)[GWCTF 2019]枯燥的抽奖
  • (pojstep1.1.2)2654(直叙式模拟)
  • (二)基于wpr_simulation 的Ros机器人运动控制,gazebo仿真
  • (附源码)计算机毕业设计大学生兼职系统
  • (十五)Flask覆写wsgi_app函数实现自定义中间件
  • (转)es进行聚合操作时提示Fielddata is disabled on text fields by default
  • (转)甲方乙方——赵民谈找工作
  • ****** 二十三 ******、软设笔记【数据库】-数据操作-常用关系操作、关系运算
  • .form文件_SSM框架文件上传篇
  • .NET CORE 第一节 创建基本的 asp.net core
  • .Net IOC框架入门之一 Unity
  • .NET 同步与异步 之 原子操作和自旋锁(Interlocked、SpinLock)(九)
  • .net的socket示例
  • @RequestBody与@ModelAttribute
  • @vueup/vue-quill使用quill-better-table报moduleClass is not a constructor