Maven基础之仓库、命令、插件机制

在这里插入图片描述

文章目录

    • Maven 仓库
      • 中央仓库和本地仓库
      • 中央仓库
      • 本地仓库
    • Maven 命令
      • generate 命令
      • compile 命令
      • clean 命令
      • test 命令
      • package 命令
      • install 命令
    • Maven 插件机制
      • 官方插件:Compile 插件
      • Tomcat 7 插件

Maven 仓库

中央仓库和本地仓库

[✎] 简单一点说
中央仓库是一个网址;本地仓库是一个本地的文件夹。

在使用 maven 过程中,maven 会去网络上的『中央仓库』下载你所需要的 java 库到你本地的某个文件夹下,这个存储 maven 下载下来的 jar 包的文件夹就是你的『本地仓库』。

[✔] 补充
本质上,其实是 maven 要求你的"本地仓库"中必须要有你所要用到的包,而因为你本地仓库中没有,所以,maven 会去网络上的"中央仓库"下载。

一旦在第一次下载过后,由于你的本地仓库中存在了这个 jar 包,那么后续,maven 就不再重复下载它了。

中央仓库

如果不指定的话,maven 默认是从 https://repo1.maven.org/maven2 下载(网速感人且不稳定)

在 maven 的全局配置文件 %homepath%/.m2/settings.xml 中,我们可以重新指定中央仓库的网址。

我们在Maven 基础之简介,基础配置中做的配置工作就是改动这个。

本地仓库

本地仓库指的是 “%homepath%/.m2/repository” 文件夹。

maven 从中央仓库(上面所配置的那个网址)中下载下来的 java 库的 jar 包,都会放在这里。

本地仓库的查找顺序:

  1. USER_HOME/.m2/settings.xml 中所配置的目录
  2. M2_HOME/conf/settings.xml 中所配置的目录
  3. USER_HOME/.m2/repository 目录

Maven 命令

语法:

mvn <指令>

generate 命令

generate 命令用于创建项目。在你所期望建立项目的文件路径下,执行如下命令

mvn archetype:generate -DgroupId=com.mycompany.app -DartifactId=my-app -DarchetypeArtifactId=maven-archetype-quickstart -DinteractiveMode=false

这条命令会在当前目录下,新建一个名字与 artifactId 值相同的 Maven 项目。

compile 命令

执行 mvn compile 命令,完成编译操作

执行完毕后,会生成 target 目录,该目录中存放了编译后的字节码文件(.class 文件)

clean 命令

执行 mvn clean 命令,完成清理操作。

执行完毕后,会将 target 目录删除。

test 命令

执行 mvn test 命令,完成单元测试操作。

执行完毕后,会在 target 目录中生成三个文件夹:surefire 、surefire-reports(测试报告)、test-classes(测试的字节码文件)

package 命令

执行 mvn package 命令,完成打包操作。

package 命令会涵盖 compile 命令和 test 命令,即,执行 package 命令会触发 compile 命令和 test 命令的执行。

执行完毕后,会在 target 目录中生成一个文件,该文件可能是 jar 、war ,这取决于 pom.xml 配置文件中的 <packaging>

install 命令

将包安装至本地仓库,以便让其它项目依赖。

install 命令会涵盖 package 命令,即,执行 install 命令会触发 package 命令的执行。

Maven 插件机制

Maven 本质上是一个插件的框架、平台。任何一个 Maven 动作(即,命令)都是由具体的插件去完成的。

例如:

  • mvn compile 这个命令,就是由 maven-compiler-plugin 插件提供的。

  • mvn test 这个命令,就是由 maven-surefire-plugin 插件提供的。

  • mvn package 这个命令,就是由 maven-jar-plugin / maven-war-plugin 插件提供的。

Maven 除了提供了大量的官方插件外,还可以「安装」第三方插件。

插件配置的依赖声明整体结构(其它无关元素略。另外,build 习惯性在 dependencies 的后面)

project 
├── dependencies
└── build└── plugins├── plugin├── plugin├── ...└── plugin

官方插件:Compile 插件

通常,官方插件都是默认激活使用的。一般,我们不会通过自定义的配置去覆盖默认配置。

主要包含如下元素:

<build><plugins><plugin><groupId>org.apache.maven.plugins</groupId><artifactId>maven-compiler-plugin</artifactId><configuration><source>1.8</source><target>1.8</target><encoding>UTF-8</encoding></configuration></plugin><plugin>...</plugin><plugin>...</plugin><plugin>...</plugin><plugins>
</build>

Tomcat 7 插件

tomcat 7 插件是一个 tomcat 7 容器的裁剪、精简版,并且它还提供了一个 tomcat7:run 命令来用这个裁剪版的运行当前项目。

我们在开发过程中 tomcat7-maven-plugin 就能运行当前项目,查看运行结果。

详情

<build><plugins><plugin><!-- 配置插件 --><groupId>org.apache.tomcat.maven</groupId><artifactId>tomcat7-maven-plugin</artifactId><version>2.2</version><configuration><path>/demo</path><port>8080</port><uriEncoding>UTF-8</uriEncoding></configuration></plugin><plugin>...</plugin><plugin>...</plugin><plugin>...</plugin></plugins>
</build>

[⚠] 警告
有 tomcat 8 版本的 maven 插件(即,一个 tomcat 8 容器的裁剪、精简版),但是中央仓库中并没有。

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

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

相关文章

Redis复制

在Redis中&#xff0c;用户可以通过执行SLAVEOF命令或者设置slaveof选项&#xff0c;让一个服务器去复制(replicate) 另一个服务器&#xff0c;我们称呼被复制的服务器为主服务器(master)&#xff0c;而对主服务器进行复制的服务器则被称为从服务器(slave)&#xff0c;如下图所…

PHP codeigniter4 搭配Nginx

> 主要是为了用Nginx运行PHP环境 1. Nginx 官方文档的配置 default.conf This configuration enables URLs without “index.php” in them and using CodeIgniter’s “404 - File Not Found” for URLs ending with “.php”. server {listen 80;listen [::]:80;se…

springboot 基础

巩固基础&#xff0c;砥砺前行 。 只有不断重复&#xff0c;才能做到超越自己。 能坚持把简单的事情做到极致&#xff0c;也是不容易的。 SpringBoot JavaEE 简介 JavaEE的局限性&#xff1a; 1、过于复杂&#xff0c;JavaEE正对的是复杂的分布式企业应用&#xff0c;然而现实…

爬虫如何应对网站的反爬机制?如何查找user-agent对应的值

import requestsurl https://movie.douban.com/top250 response requests.get(url) # 查看结果 print(response)在requests使用一文中我们有讲到&#xff0c;当状态码不是200时表示爬虫不可用&#xff0c;也就是说我们获取不到网页源代码。但是我们还是可以挣扎一下&#xff…

一文秒懂HTTP协议到底是什么?原理?

目录 1.什么是http协议&#xff1f; 2.http协议的版本&#xff1f; 3.http文本框架 4.http请求报文 5.http报文格式 6.http响应报文 7.HTTP的状态码 8.HTTP首部介绍 9.什么是URL和URI&#xff1f; 10.CGI是什么&#xff1f; 1.什么是http协议&#xff1f; http&#…

测试架构师如何落地性能测试方案(一)

背景描述&#xff1a; 最近刚接手一个新项目&#xff0c;在最开始的时候要求对这个项目做性能测试&#xff0c;产品经理也给不出性能需求&#xff0c;只因为这个项目是电商项目&#xff0c;可能会有高并发&#xff0c;秒杀的场景&#xff0c;所以产品经理要求我们对这个项目必…

STM32基于CubeIDE和HAL库 基础入门学习笔记:物联网项目开发流程和思路

文章目录&#xff1a; 第一部分&#xff1a;项目开始前的计划与准备 1.项目策划和开发规范 1.1 项目要求文档 1.2 技术实现文档 1.3 开发规范 2.创建项目工程与日志 第二部分&#xff1a;调通硬件电路与驱动程序 第三部分&#xff1a;编写最基础的应用程序 第四部分&…

opencv带GStreamer之Windows编译

目录 1、下载GStreamer和安装2. GSTReamer CMake配置3. 验证是否配置成功 1、下载GStreamer和安装 下载地址如下&#xff1a; gstreamer-1.0-msvc-x86_64-1.18.2.msi gstreamer-1.0-devel-msvc-x86_64-1.18.2.msi 安装目录无要求&#xff0c;主要是安装完设置环境变量 xxx\1…

【css】渐变

渐变是设置一种颜色或者多种颜色之间的过度变化。 两种渐变类型&#xff1a; 线性渐变&#xff08;向下/向上/向左/向右/对角线&#xff09; 径向渐变&#xff08;由其中心定义&#xff09; 1、线性渐变 语法&#xff1a;background-image: linear-gradient(direction, co…

springboot结合element-ui实现增删改查,附前端完整代码

实现功能 前端完整代码 后端接口 登录&#xff0c;注册&#xff0c;查询所有用户&#xff0c;根据用户名模糊查询&#xff0c;添加用户&#xff0c;更新用户&#xff0c;删除用户 前端 注册&#xff0c;登录&#xff0c;退出&#xff0c;用户增删改查&#xff0c;导航栏&#…

Android Sutdio 导入libs文件夹下的jar包没反应

有点离谱&#xff0c;笨笨的脑子才犯的错误 首先发现问题&#xff1a;转移项目的时候 直接复制粘贴libs文件夹下的jar包到新项目&#xff0c;在build.gradle文件下 使用语句并应用也没反应&#xff08;jar包没有出现箭头且代码报错&#xff0c;找不到&#xff09; implementa…

什么样的 PLC 可以算是高端 PLC?

针对问题本身&#xff0c;有的回答里都提到了。可靠性&#xff0c;扫描时间&#xff0c;带离散量点数&#xff0c;带模拟量输出点数&#xff0c;扩展性&#xff0c;这些都可以看作PLC系统级别划分的依据。比如说&#xff0c;有相应安全完整性等级认证的LOGIC SOLVER为核心的PLC…

五个独特且有趣的ChatGPT指令

今天分享5个很实用的指令&#xff0c;这几个指令很多时候对我们输出内容的连贯性、文章风格、创意性等方面有着决定性的作用。 目录 第一个&#xff1a;Max tokens&#xff08;最大令牌&#xff09; 第二个&#xff1a;Top_p(控制采样) 第三个&#xff1a;Presence_penalty …

Android Studio System.out.println()中文乱码

第一步&#xff1a; 打开studio64.exe.vmoptions加入-Dfile.encodingUTF-8 第二步&#xff1a; File-Settings-Editor-File Encodings 把所有的编码格式改为UTF-8 尝试跑一下代码&#xff0c;如果还不行&#xff0c;重启IDE 再试试。

UI美工设计岗位的工作职责

UI美工设计岗位的工作职责1 职责&#xff1a; 1、负责软件界面的美术设计、创意工作和制作工作; 2、根据各种相关软件的用户群&#xff0c;提出构思新颖、有高度吸引力的创意设计; 3、对页面进行优化&#xff0c;使用户操作更趋于人性化; 4、维护现有的应用产品; 5、收集和…

NLP文本匹配任务Text Matching [无监督训练]:SimCSE、ESimCSE、DiffCSE 项目实践

NLP文本匹配任务Text Matching [无监督训练]&#xff1a;SimCSE、ESimCSE、DiffCSE 项目实践 文本匹配多用于计算两个文本之间的相似度&#xff0c;该示例会基于 ESimCSE 实现一个无监督的文本匹配模型的训练流程。文本匹配多用于计算两段「自然文本」之间的「相似度」。 例如…

一百五十三、Kettle——Linux上安装的kettle9.3启动后说缺少libwebkitgtk-1.0(真是坑爹啊,刚龟速下载又忍痛卸载)

一、问题 在kettle9.3可以在本地连接hive312后&#xff0c;在Linux中安装了kettle9.3&#xff0c;结果启动时报错WARNING: no libwebkitgtk-1.0 detected, some features will be unavailable 而且如果直接下载libwebkitgtk的话也没有用 [roothurys22 data-integration]# yu…

在线吉他调音

先看效果&#xff08;图片没有声&#xff0c;可以下载源码看看&#xff0c;比这更好~&#xff09;&#xff1a; 再看代码&#xff08;查看更多&#xff09;&#xff1a; <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8&quo…

【第二阶段】kotlin的函数类型作为返回类型

fun main() {//调用,返回的是一个匿名类型&#xff0c;所以info就是一个匿名函数val infoshow("",0)//info接受的返回值为匿名类型&#xff0c;此时info就是一个匿名函数println(info("kotlin",20)) }//返回类型为一个匿名函数的返回类型fun show(name:Str…

01 - 工作区、暂存区、版本库、远程仓库 - 以一次连贯的提交操作为例

查看所有文章链接&#xff1a;&#xff08;更新中&#xff09;GIT常用场景- 目录 文章目录 1. 工作区、暂存区、版本库、远程仓库1.1 工作区1.2 工作区 > 暂存区&#xff1a;git add1.3 暂存区 > 版本库&#xff1a;git commit1.4 push到远程仓库 1. 工作区、暂存区、版本…