Maven入门:自动化构建工具的基本概念与配置

news2024/11/15 10:52:38

一、什么是Maven

目前无论使用IDEA还是Eclipse等其他IDE,使用里面 ANT 工具帮助我们进行编译,打包运行等工作。Apache基于ANT进行了升级,研发出了全新的自动化构建工具Maven。

Maven使用项目对象模型(POM-Project Object Model,项目对象模型)的概念,可以通过一小段描述信息来管理项目的构建,报告和文档的软件项目管理工具。在Maven中每个项目都相当于是一个对象,对象(项目)和对象(项目)之间是有关系的。关系包含了:依赖、继承、聚合,实现Maven项目可以更加方便的实现导jar包、拆分项目等效果。

下载地址:http://maven.apache.org
在这里插入图片描述

二、目录结构

在这里插入图片描述

  • bin:存放的是执行文件,命令
  • conf:存放配置文件,里面的settings.xml是maven的全局配置文件。

在IDEA中直接集成了Maven,setting配置存放在.m2目录下,如果没有该目录可以手动执行一下maven命令:mvn help:system

三、远程仓库和本地仓库

远程仓库指通过各种协议(如file://http://)访问的其它类型的仓库。不在本机中的一切仓库,都是远程仓库。远程仓库又分为中央仓库本地私服仓库

远程仓库可能是第三方搭建的真实的远程仓库,用来提供他们的构件下载(例如repo.maven.apache.orguk.maven.org是Maven的中央仓库)。

远程仓库也可以是公司自己在局域网搭建的Maven仓库,用来在开发团队间共享私有构件和管理发布的。

默认的远程仓库使用的Apache提供的中央仓库:https://mvnrepository.com/

本地仓库指本机的一份拷贝,用来缓存远程下载,包含你尚未发布的临时构件。
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

四、仓库配置

settings.xml中:主要配置了三个信息:

  1. 本地仓库地址
  2. 镜像仓库信息
  3. 指定JDK的版本

配置本地仓库

本地仓库是开发者本地电脑中的一个目录,用于缓存从远程仓库下载的构件。默认的本地仓库是${user.home}/.m2/repository。用户可使用settings.xml文件修改本地仓库。具体内容如下:

<?xml version="1.0" encoding="UTF-8"?>
<settings xmlns="http://maven.apache.org/SETTINGS/1.0.0"
          xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
          xsi:schemaLocation="http://maven.apache.org/SETTINGS/1.0.0 http://maven.apache.org/xsd/settings-1.0.0.xsd">
  <!-- 本地仓库配置 -->
  <localRepository>具体本地仓库位置</localRepository>
  <!-- 省略,具体信息参考后续内容。 -->
</settings>

配置镜像仓库

如果仓库A可以提供仓库B存储的所有内容,那么就可以认为A是B的一个镜像。例如:我们可以使用阿里云提供的镜像替换官方镜像,提高下载依赖的速度。打开 maven 的配置文件( windows 机器一般在 maven 安装目录的 conf/settings.xml ),在<mirrors></mirrors>标签中添加mirror子节点:

<mirror>
  <!-- 指定镜像ID(可自己改名) -->
  <id>aliyunmaven</id>
  <!-- 匹配中央仓库(阿里云的仓库名称,不可以自己起名,必须这么写)-->
  <mirrorOf>*</mirrorOf>
  <!-- 指定镜像名称(可自己改名)  -->
  <name>阿里云公共仓库</name>
  <!-- 指定镜像路径(镜像地址) -->
  <url>https://maven.aliyun.com/repository/public</url>
</mirror>

仓库优先级

在这里插入图片描述

JDK配置

当你的idea中有多个jdk的时候,就需要指定你编译和运行的jdk。 在settings.xml中配置:

<profile>
    <!-- settings.xml中的id不能随便起的 -->
    <!-- 告诉maven我们用jdk1.8 -->
    <id>jdk-1.8</id>
    <!-- 开启JDK的使用 -->
    <activation>
        <activeByDefault>true</activeByDefault>
        <jdk>1.8</jdk>
    </activation>
    <properties>
        <!-- 配置编译器信息 -->
        <maven.compiler.source>1.8</maven.compiler.source>
        <maven.compiler.target>1.8</maven.compiler.target>
        <maven.compiler.compilerVersion>1.8</maven.compiler.compilerVersion>
    </properties>
</profile>

配置的前提是你的idea中要有1.8的jdk

五、Maven工程类型

1、POM工程 POM工程是逻辑工程。用在父级工程或聚合工程中。用来做 jar 包的版本控制。

2、JAR工程 将会打包成jar,用作jar包使用。即常见的本地工程 —> Java Project。

3、WAR工程 将会打包成war,发布在服务器上的工程。

六、Maven项目结构

--MavenDemo 项目名
  --.idea 项目的配置,自动生成的,无需关注。
  --src
    -- main 实际开发内容
         --java 写包和java代码,此文件默认只编译.java文件
         --resource 所有配置文件。最终编译把配置文件放入到classpath中。
    -- test  测试时使用,自己写测试类或junit工具等
        --java 储存测试用的类
  pom.xml 整个maven项目所有配置内容。
  • src/main/java 储存java源代码
  • src/main/resources储存主要的资源文件。比如xml配置文件和properties文件
  • src/test/java储存测试用的类,比如JUNIT的测试一般就放在这个目录下面。因为测试类本身实际是不属于项目的,所以放在任何一个包下都显得很尴尬,所以maven专门创建了一个测试包用于存放测试的类
  • src/test/resources储存测试环境用的资源文件
  • src包含了项目所有的源代码和资源文件,以及其他项目相关的文件。
  • target编译后内容放置的文件夹
  • pom.xml是Maven的基础配置文件。配置项目和项目之间关系,包括配置依赖关系等等

注意:目录名字不可以随便改,因为maven进行编译或者jar包生成操作的时候,是根据这个目录结构来找的,你若轻易动,那么可能会找不到了。

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

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

相关文章

ARM基础---编程模型---ARM汇编

一、编程模型 1.1.数据和指令集 1.数据 ARM 采用的是32位架构。 ARM 约定:Byte &#xff1a; 8 bits Halfword &#xff1a; 16 bits (2 byte)Word : 32 bits (4 byte)Doubleword 64-bits&#xff08;8byte&#xff09;&#xff08;Cortex-A处理器&#xff09; 2.指令 ARM…

红日靶场vulnstack (三)

环境搭建 直接把靶机下载下来后&#xff0c;配置环境如下&#xff0c;直接Centsos配置多一张网卡NAT模式就行。 //只有这两台主机IP和图片不同&#xff0c;其它都是一样的&#xff0c;因为图片是拿别人的 kali&#xff1a;192.168.145.171 Centos&#xff1a;192.168.145.130…

https和harbor仓库跟k8s

目录 https 做证书 harbor仓库 https https是加密的http&#xff0c;它的端口是443&#xff0c;它的协议是tcp协议。建立连接和普通的tcp是一样的&#xff0c;都是三次握手和四次挥手&#xff0c;但是它三次握手之后有一个步骤&#xff1a;SSL或者TLS握手的过程&#xff0c…

DAMA数据管理知识体系(第4章 数据架构)

课本内容 4.1 引言 概要 数据架构考虑方面 数据架构成果&#xff0c;包括不同层级的模型、定义、数据流&#xff0c;这些通常被称为数据架构的构件数据架构活动&#xff0c;用于形成、部署和实现数据架构的目标数据架构行为&#xff0c;包括影响企业数据架构的不同角色之间的协…

vue3+ts 实现模板表格文件下载~

1、效果图&#xff1a; 2、创建点击事件&#xff0c;并发起请求&#xff0c;获取模板表格文件下载url地址。 //组件 <a-button class"btn btn_width" click"download"> 下载模板 </a-button>// 文件模板下载 import { getTemplate } from /ap…

JAVA读写Excel(jxl,poi,easyExcel)

目录 一、需求描述 二、具体操作Excel的常用方法 方法一&#xff1a; 使用jxl 方法二&#xff1a; POI 方法三&#xff1a;EasyExcel 三、总结 一、需求描述 前端有时候会传送 Excel 文件给后端&#xff08;Java&#xff09;去解析&#xff0c;那我们作为后端该如何实现…

Linux内核源码-USB驱动分析

基础层次详解 通用串行总线&#xff08;USB&#xff09;主要用于连接主机和外部设备&#xff08;协调主机和设备之间的通讯&#xff09;&#xff0c;USB 设备不能主动向主机发送数据。USB 总线采用拓扑&#xff08;树形&#xff09;&#xff0c;主机侧和设备侧的 USB 控制器&a…

《亿级流量系统架构设计与实战》第十二章 评论服务

评论服务 一、概述二、单级评论模式1、模型设计2、分库分表必要性3、高并发问题 三、二级评论模式1、模型设计2、评论审核与状态3、按照热度排序4、评论读取流程图5、架构总览 四、盖楼评论模式1、数据库递归查询2、数据库保存完整楼层3、图数据库 内容总结自《亿级流量系统架构…

关于IDEA的快捷键不能使用的原因

有时候IDEA的快捷键用不了&#xff0c;这时应该是快捷键发生冲突了&#xff0c;重新设置一下即可。以批量修改变量名称的shift f6为例&#xff08;我的这个快捷键用不了&#xff09;&#xff1a; 初始的rename的快捷键为shift f6 这个快捷键是冲突的&#xff0c;所以我们需要…

探索PDF的奥秘:pdfrw库的神奇之旅

文章目录 探索PDF的奥秘&#xff1a;pdfrw库的神奇之旅背景&#xff1a;为何选择pdfrw&#xff1f;pdfrw是什么&#xff1f;如何安装pdfrw&#xff1f;五个简单的库函数使用方法场景应用&#xff1a;pdfrw在实际工作中的应用常见问题与解决方案总结 探索PDF的奥秘&#xff1a;p…

安防监控视频平台LntonAIServer视频智能分析平台新增视频质量诊断功能

随着安防行业的快速发展&#xff0c;视频监控系统已经成为维护公共安全和个人隐私的重要工具。然而&#xff0c;由于各种因素的影响&#xff0c;视频流的质量可能会受到影响&#xff0c;从而导致监控效果不佳。为了解决这一问题&#xff0c;LntonAIServer推出了全新的视频质量诊…

基于.NET6的WPF基础总结(下)

目录 一、集合控件 1. ListBox可选项列表 2. ListView数据列表控件 3. DataGrid数据表格控件 4. ComboBox下拉框控件 5. TabControl 6. TreeView 树形控件 7. Menu菜单 8. ContextMenu上下文菜单 二、图像控件 1. Ellipse 椭圆 2. Line线段 3. Rectangle矩形 4.…

如何打造中小学在线教学平台?Java SpringBoot集成Vue,教育资源管理新篇章

✍✍计算机编程指导师 ⭐⭐个人介绍&#xff1a;自己非常喜欢研究技术问题&#xff01;专业做Java、Python、微信小程序、安卓、大数据、爬虫、Golang、大屏等实战项目。 ⛽⛽实战项目&#xff1a;有源码或者技术上的问题欢迎在评论区一起讨论交流&#xff01; ⚡⚡ Java实战 |…

基于Transformer架构训练LLM大语言模型:Transformer架构工作原理

视频讲解&#xff1a;Transformer架构的工作原理讲解_哔哩哔哩_bilibili 一 Transformer架构总体架构 1 总体架构图 总体架构说明&#xff1a; 输入层 词嵌入&#xff08;Word Embeddings&#xff09;: 输入文本中的每个词都被映射到一个高维空间中的向量&#xff0c;这些向…

HTML静态网页成品作业(HTML+CSS)——动漫大耳朵图图网页(4个页面)

&#x1f389;不定期分享源码&#xff0c;关注不丢失哦 文章目录 一、作品介绍二、作品演示三、代码目录四、网站代码HTML部分代码 五、源码获取 一、作品介绍 &#x1f3f7;️本套采用HTMLCSS&#xff0c;未使用Javacsript代码&#xff0c;共有4个页面。 二、作品演示 三、代…

智能化的知识管理:大模型在知识图谱构建中的突破性应用

转自&#xff1a;大模型奇点说 知识图谱是一种以图形结构组织数据的知识表示形式&#xff0c;其中&#xff0c;概念、事件、实体等知识单元通过节点呈现&#xff0c;而它们之间的各种关系则通过边来描述。知识图谱的显著特点在于&#xff0c;通过关系的定义&#xff0c;为节点提…

EmguCV学习笔记 VB.Net 9.3 移动检测类

版权声明&#xff1a;本文为博主原创文章&#xff0c;转载请在显著位置标明本文出处以及作者网名&#xff0c;未经作者允许不得用于商业目的。 EmguCV是一个基于OpenCV的开源免费的跨平台计算机视觉库,它向C#和VB.NET开发者提供了OpenCV库的大部分功能。 教程VB.net版本请访问…

第十一课,多分支判断

一&#xff0c;多分支结构 某些场景下&#xff0c;判断条件不止一个&#xff0c;可能有多个。 语法格式&#xff08;下图左&#xff09;&#xff1a; *需要注意&#xff1a;这里仅是以5种选择作为例子&#xff0c; 可以根据自己的需要&#xff0c;在if...else的中间插入任意…

OrangePi AIpro 香橙派 昇腾 Ascend C 算子开发 与 调用 - Tiling实现

OrangePi AIpro 香橙派 昇腾 Ascend C 算子开发 与 调用 - Tiling实现 flyfish 前置知识 基于Kernel直调工程的算子开发流程图 其中有一个Tiling实现 什么是Tiling、Tiling实现 计算API&#xff0c;包括标量计算API、向量计算API、矩阵计算API&#xff0c;分别实现调用S…

51单片机-串口通信(电脑向串口助手发送数据不接收)

80C52中的串口通过SCON寄存器配置波特率位可变的&#xff0c;因此&#xff0c;需要通过计算定时器1的参与&#xff0c;在定时器配置过程中选择定时器的相关寄存器TMOD来配置定时器的模式为模式2&#xff08;8位自动重装定时器&#xff0c;如上图&#xff0c;TL1为计数器&#x…