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

news2024/11/23 3:06:28

在这里插入图片描述

文章目录

    • 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.coloradmin.cn/o/877260.html

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

相关文章

cs231n assignment2 q5 PyTorch on CIFAR-10

文章目录 嫌啰嗦直接看源码Q5 :PyTorch on CIFAR-10three_layer_convnet题面解析代码输出 Training a ConvNet题面解析代码输出 ThreeLayerConvNet题面解析代码输出 Train a Three-Layer ConvNet题面解析代码输出 Sequential API: Three-Layer ConvNet题面解析代码输出 CIFAR-1…

DevOps系列文章之 GitlabCICD自动化部署SpringBoot项目

一、概述 本文主要记录如何通过Gitlab CI/CD自动部署SpringBoot项目jar包。 二、前期准备 准备三台 CentOS7服务器&#xff0c;分别部署以下服务&#xff1a; 序号系统IP服务1CentOS7192.168.56.10Gitlab2CentOS7192.168.56.11Runner &#xff08;安装Docker&#xff09;3Cen…

docker的入门使用—太详细了

docker的使用 一、Docker概念跟普通虚拟机的对比概念Docker部署的优势使用docker的简要介绍dockerfile和docker-compose区别 二、docker命令介绍&#xff1a;1、构建镜像和运行2、 常用命令 三、镜像加速源四、安装五、Docker快速安装软件演示 Docker 安装 Redis安装 Wordpress…

kubernetes中PV和PVC

目录 一、PV、PVC简介 二、PV、PVC关系 三、创建静态PV 1.配置nfs存储 2.定义PV 3.定义PVC 4.测试访问 四、 搭建 StorageClass nfs-client-provisioner &#xff0c;实现 NFS 的动态 PV 创建 1. 配置nfs服务 2.创建 Service Account 3.使用 Deployment 来创建 NFS P…

Unity Bolt使用协程等待

使用Unity bolt插件可以进行一些简单逻辑开发。本质上相当于把C#接口以图形化的方式进行调用。但是怎么使用协程进行等待呢。经过一些研究&#xff0c;可以使用继承WaitUnit的组件方式进行扩展。下面是具体的操作步骤。 1&#xff1a;等待组件扩展。 经过查找&#xff0c;Bol…

成人自考-英语二-名词详细介绍

感谢内容提供者&#xff1a;金牛区吴迪软件开发工作室 文章目录 一、名词简介1.常见名词后缀 二、什么时候空格里填入名词三、名词分类1.可数名词(1)规则变化(2)规则变化中的特例(3)不规则变化 2.不可数名词(1)物质名词(2)抽象名词 四、描述数量1.修饰可数名词2.修饰不可数名词…

WS2812B————动/静态显示

一&#xff0c;系统架构 二&#xff0c;芯片介绍 1.管脚说明 2.数据传输时间 3.时序波形 4.数据传输方法 5.常用电路连接 三&#xff0c;代码展示及说明 驱动模块 在驱动模块首先选择使用状态机&#xff0c;其中包括&#xff0c;空闲状态&#xff0c;复位清空状态&#xff0c…

性能场景和性能需求指标

目录 一 性能场景 1、基准性能场景 2、容量性能场景 3、稳定性性能场景 4、异常性能场景 二 性能需求指标 1、业务指标 2、技术指标 2.1 时间指标 RT 2.2 容量指标 TPS 2.3 资源利用率 3、指标之间的关系 “TPS”与“响应时间” “用户数”与“TPS”与“压力工具中…

【量化课程】08_2.深度学习量化策略基础实战

文章目录 1. 深度学习简介2. 常用深度学习模型架构2.1 LSTM 介绍2.2 LSTM在股票预测中的应用 3. 模块分类3.1 卷积层3.2 池化层3.3 全连接层3.4 Dropout层 4. 深度学习模型构建5. 策略实现 1. 深度学习简介 深度学习是模拟人脑进行分析学习的神经网络。 2. 常用深度学习模型架…

DevOps系列文章 之 SpringBoot整合GitLab-CI实现持续集成

在企业开发过程中&#xff0c;我们开发的功能或者是修复的BUG都需要部署到服务器上去&#xff0c;而这部分部署操作又是重复且繁琐的工作&#xff0c;GitLab-CI 持续集成为我们解决了这一痛点&#xff0c;将重复部署的工作自动化&#xff0c;大大的节省了程序员们的宝贵时间。本…

群晖 NAS 十分精准的安装 Mysql 远程访问连接

文章目录 1. 安装Mysql2. 安装phpMyAdmin3. 修改User 表4. 本地测试连接5. 安装cpolar6. 配置公网访问地址7. 固定连接公网地址 转载自cpolar极点云文章&#xff1a;群晖NAS 安装 MySQL远程访问连接 群晖安装MySQL具有高效、安全、可靠、灵活等优势&#xff0c;可以为用户提供一…

C++初阶之一篇文章教会你queue和priority_queue(理解使用和模拟实现)

queue和priority_queue&#xff08;理解使用和模拟实现&#xff09; 什么是queuequeue的使用1.queue构造函数2.empty()3.size()4.front()5.back();6.push7.emplace8.pop()9.swap queue模拟实现什么是priority_queuepriority_queue的使用1.priority_queue构造函数1.1 模板参数 C…

如何切换goland之中的版本号(升级go 到1.20)

go 安装/版本切换_go 切换版本_云满笔记的博客-CSDN博客 用brew就行&#xff1a; echo export PATH"/opt/homebrew/opt/go1.20/bin:$PATH" >> ~/.zshrc

无涯教程-Perl - scalar函数

描述 此函数强制EXPR的判断在标量context中进行,即使它通常在列表context中也可以使用。 语法 以下是此函数的简单语法- scalar EXPR返回值 此函数返回标量。 例 以下是显示其基本用法的示例代码- #!/usr/bin/perl -wa (1,2,3,4); b (10,20,30,40);c ( a, b ); prin…

如何与 Anheuser-Busch 建立 EDI 连接?

Anheuser-Busch 于 1852 年创立&#xff0c;总部位于美国密苏里州圣路易斯市&#xff0c;出产的百威啤酒(Budweiser)名扬世界&#xff0c;深受各国消费者喜爱。推进数字化转型&#xff0c;科技赋能降费增效。在诸多举措之中&#xff0c;可以看到 EDI 的身影&#xff0c;借助 ED…

Java智慧工地APP源码带AI识别

智慧工地为建筑全生命周期赋能&#xff0c;用创新的可视化与智能化方法&#xff0c;降低成本&#xff0c;创造价值。 一、智慧工地APP概述 智慧工地”立足于互联网&#xff0c;采用云计算&#xff0c;大数据和物联网等技术手段&#xff0c;针对当前建筑行业的特点&#xff0c;…

Apipost接口自动化控制器使用详解

测试人员在编写测试用例以及实际测试过程中&#xff0c;经常会遇到两个棘手的问题&#xff1a; •稍微复杂一些的自动化测试逻辑&#xff0c;往往需要手动写代码才能实现&#xff0c;难以实现和维护 •测试用例编写完成后&#xff0c;需要手动执行&#xff0c;难以接入自动化体…

对比学习论文综述总结

第一阶段:百花齐放(18-19中) 有InstDisc(Instance Discrimination)、CPC、CMC代表工作。在这个阶段方法模型都还没有统一,目标函数也没有统一,代理任务也没有统一,所以说是一个百花齐放的时代 1 判别式代理任务---个体判别任务 1.1 Inst Dict---一个编码器+一个memory…

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

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

关于单行文本input和多行文本textarea唤起自动完成功能

若不要自动完成功能&#xff0c;则增加 autocomplete"off" 属性到控件或窗体中&#xff0c;默认 autocomplete"on" 处于开启状态。 实测过程中&#xff0c;单行文本可以有自动完成功能&#xff0c;多行文本无论如何实验都不行。查了查资料&#xff0c;MDN…