maven入门学习

news2024/11/20 1:38:09

简介

maven是基于ant升级的,apache的自动化构建工具、项目管理工具

Maven – Welcome to Apache Maven

maven使用pom.xml进行配置

maven项目可以更方便的实现导jar包、拆分项目

idea默认集成了maven

下载安装

 下载maven,在官网(Maven – Welcome to Apache Maven)

 binary可以直接使用,source是带源码的

解压后,bin目录下方的是执行文件/命令

idea中可以直接集成maven(不用敲命令了)

本地仓库、远程仓库 

远程仓库

默认的远程仓库是apache提供的中央仓库https://mvnrepository.com/

本地仓库路径配置

 镜像仓库配置

仓库优先级:

本地 > 配置文件中指定的仓库 > 镜像仓库 > 中央仓库 

 

指定编译运行的jdk

当idea中有多个jdk的时候,需要指定编译运行的jdk

 

maven项目类型

用maven构建项目,会有三种类型

pom

pom工程是逻辑工程,用在父级工程或者聚合工程中,用来做jar包的版本控制

<packaging>pom</packaging>

jar

打成jar包 java project

war

打成war包,发布在服务器上

项目坐标

GroupId:类似包名,防止重名,一般填写的是域名反转(eg:com.company)

ArtifactId:一般使用项目名

Version:版本,SNAPSHOT一般是非正式版本,上线后会去掉

 maven项目标准目录结构

通过dependencies添加依赖

 

maven项目关系依赖具有传递性

项目1依赖项目2,项目2依赖项目3,那么项目1中可以世界使用项目3

原则

最短路径有限原则

A->B->C->D(2.0)

A->E->D(1.0)

那么D(1.0)会被使用,因为A通过E到D的路径更短

最先声明原则

依赖路径长度一样时,

A->B->D(2.0)

A->E->D(1.0)

A中先声明哪个,哪个版本最先使用

A中先声明B,那么使用D(2.0)

A中先声明E,那么使用D(1.0)


 

依赖范围scope

默认是编译和执行都有效compile

<scope>compile</scope>

provided

项目打包后不使用该依赖

编译运行时使用该依赖,然后项目打包后,依赖可能跟容器中的依赖冲突,此时用provided,直接使用容器的依赖(eg:servlet-api)

runtime

编译时不需要生效,运行时生效(eg:jdbc)

system

与provided类似,不过需要指定一个本地系统路径的jar

<dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
            <scope>system</scope>
            <systemPath>D:/mavenResp</systemPath>
        </dependency>

test

编译测试、运行测试是需要,生成正式运行时不需要(eg:Junit)

import

值适用于pom文件中的dependencyManagement部分,表明子项目必须要使用dependencyManagement部分的依赖版本

 排除依赖,不需要写version

        <dependency>
            <groupId>com.alibaba.cloud</groupId>
            <artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
            <exclusions>
                <exclusion>
                    <groupId>org.springframework.cloud</groupId>
                    <artifactId>spring-cloud-starter-netflix-ribbon</artifactId>
                </exclusion>
            </exclusions>
        </dependency>

父子工程

在子工程中添加

    <parent>
        <groupId>xxx</groupId>
        <artifactId>xxx</artifactId>
        <version>xxx</version>
        <relativePath>./pom.xml</relativePath>
    </parent>

maven插件

配置maven的编译插件

将jdk的版本改为1.7

 

配置文件插件

默认情况下,只有resources目录下的配置文件会被打包

如果想要把其他目录下的配置文件也打包

 tomcat插件

创建web(war)项目

配置Tomcat插件

 

 使用tomcat插件发布部署并执行war工程的时候,需要使用启动命令:tomcat7:run

这样就可以启动项目了 

maven命令

install

编译、打包,安装到本地仓库,也会有target目录

compile

只编译,相当于javac

package

编译、打包(不会把打包后的jar放到本地仓库中)

clean

清除

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

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

相关文章

如何设计电商SPU与SKU表以及相关的表?

一、先了解SPU及SKU的相关概念&#xff1a; 我们在开发电商项目时&#xff0c;必须首先要了解两个概念&#xff0c;SPU与SKU是什么&#xff1f;这也是设计一个好的电商系统的必要前提。商系统实现了什么功能&#xff0c;大数情况下都是和商品模块相关联的。因此商品模块本身的…

Python基础入门(3)—— 什么是函数递归、字典、集合、文件操作、异常处理?

文章目录 01 | &#x1f698;函数 && 递归&#x1f694;函数&#x1f694;递归 02 | &#x1f698;字典03 | &#x1f698;集合04 | &#x1f698;文件05 | &#x1f698;异常处理06 | &#x1f698;习题 Better late than never. 迟做总比不做好;晚来总比不来好。 01 …

M302A-CW/BYT-通刷S905L3(B)-当贝纯净桌面卡刷固件包

M302A-CW&#xff0f;BYT-通刷S905L3(B)-当贝纯净桌面卡刷固件包-内有教程 特点&#xff1a; 1、适用于对应型号的电视盒子刷机&#xff1b; 2、开放原厂固件屏蔽的市场安装和u盘安装apk&#xff1b; 3、修改dns&#xff0c;三网通用&#xff1b; 4、大量精简内置的没用的…

MFP450 基础飞行平台问世,支持室内室外无GPS环境飞行

无人机开发入门&#xff0c;我们需要一个怎样的基础飞行平台&#xff1f; 开源无人机的发展日新月异&#xff0c;但遗憾的是&#xff0c;在PX4和FMT生态中&#xff0c;还很少看到一个稳定可靠的基础飞行平台。目前国内市场的选择不多&#xff0c;还是以DIY为主&#xff0c;尤其…

GEE:使用 ROC 曲线和 AUC 评估分类算法性能

作者:CSDN @ _养乐多_ 在机器学习和遥感数据分析领域,评估分类算法的性能是关键任务之一。Google Earth Engine(GEE)平台提供了丰富的遥感数据和分析工具,结合 ROC(接收者操作特征)曲线和 AUC(曲线下面积)分析,可以有效评估分类算法的准确性和可靠性。 本文将介绍如…

基于阻塞队列实现异步秒杀

文章目录 1 异步秒杀思路2 Redis完成秒杀资格判断3 基于阻塞队列实现秒杀优化总结 1 异步秒杀思路 我们来回顾一下下单流程 当用户发起请求&#xff0c;此时会请求nginx&#xff0c;nginx会访问到tomcat&#xff0c;而tomcat中的程序&#xff0c;会进行串行操作&#xff0c;分…

搞懂 API,跨域资源贡献 (CORS )和安全性问题

在 Web 应用开发中&#xff0c;API 是应用程序和其他系统之间进行数据交互的主要方式。 跨域资源共享&#xff08;CORS&#xff09;是一种常见的处理跨域请求的技术&#xff0c;但同时也带来了一些安全性问题。我将分享 CORS 技术及其安全性问题。 跨域资源共享&#xff08;COR…

django CBV 与 DRF APIView源码分析

django CBV源码分析 在django框架中&#xff0c;视图层中的逻辑即可以使用函数处理也可以使用类进行处理&#xff0c;如果在视图层中使用函数处理请求&#xff0c;就是FBV(function base views)&#xff0c;如果在视图层中使用类处理请求&#xff0c;就是CBV(class base views…

Windows无法完成格式化怎么办?正确的3个解决方法!

案例&#xff1a;Windows无法完成格式化怎么办 【由于我的U盘使用时间过长&#xff0c;很多文件都是不需要的&#xff0c;我想将其格式化&#xff0c;但插入电脑后&#xff0c;Windows根本无法完成格式化&#xff0c;这是为什么呢&#xff1f;我应该怎么做呢&#xff1f;求答案…

谁想和我一起做低代码平台!一个可以提升技术,让简历装x的项目

序言 正如文章标题所述&#xff0c;最近一段时间低代码这个概念非常的火&#xff0c;但其实在不了解这个东西的时候觉得它真的很炫酷&#xff0c;从那时就萌生了做一个低代码平台的想法。 但随着时间的变化&#xff0c;现在市面上低代码各个业务方向的平台都有了&#xff0c;可…

算法训练第二周题解汇总

A - AABCC [ABC300D] AABCC - 洛谷 | 计算机科学教育新生态 (luogu.com.cn) 大意&#xff1a; 题解&#xff1a; 就是纯暴力题&#xff0c;由于 a<b<c&#xff0c;所以≤N&#xff0c;a<500&#xff1b;<N&#xff0c;c<。先用埃筛预处理&#xff0c;然后枚举的…

hutool工具

目录 官网 简介 pom.xml EscapeUtil使用 HttpRequest使用 官网 Hutool参考文档 简介 Hutool 是一个小而全的 Java工具类库&#xff0c;通过静态方法封装&#xff0c;降低相关API的学习成本&#xff0c;提高工作效率&#xff0c;涵盖了Java开发开发中的方方面面 使用 Hu…

Java入门指南:从零开始的基础语法

java语言概述 Java是一种高级编程语言&#xff0c;最初由Sun Microsystems&#xff08;现在是Oracle Corporation的一部分&#xff09;在1995年推出。Java以其简单、可移植和安全的特性而闻名&#xff0c;并广泛用于各种应用程序开发&#xff0c;从桌面应用程序到移动应用程序和…

Linux如何卸载或者删除docker

1.查看当前docker状态: systemctl status docker 2.如果是运行状态则停掉: systemctl stop docker 3.查看yum安装的docker文件包: yum list installed |grep docker ​ 删除所有安装的docker文件包 yum -y remove docker.x86_64 其他的docker相关的安装包同样删除操作&#xf…

国内GPU渲染农场有哪些值得推荐?

GPU凭借它在图形渲染领域强大的架构和计算能力&#xff0c;给广大用户带来了一种更为高效的解决方案&#xff0c;我们启用GPU渲染加速&#xff0c;实际就是调用GPU加速图形的渲染和填充。既然聊到GPU渲染&#xff0c;CG行业的朋友们肯定也好奇国内值得推荐的GPU渲染农场有哪些&…

【C++】-类和对象之日期类的具体实现(中)

&#x1f496;作者&#xff1a;小树苗渴望变成参天大树 ❤️‍&#x1fa79;作者宣言&#xff1a;认真写好每一篇博客 &#x1f4a8;作者gitee:gitee &#x1f49e;作者专栏&#xff1a;C语言,数据结构初阶,Linux,C 如 果 你 喜 欢 作 者 的 文 章 &#xff0c;就 给 作 者 点…

企业数字化转型的五个常见问题以及回答

数字化、数字化转型其实并不是新的概念&#xff0c;早在十年前就提出来了&#xff0c;但近两年才开始真正走向公众视野。由于概念的泛滥与传统信息化的双重叠加影响&#xff0c;多数企业存在认知上的诸多困扰。 数字化转型为何成为当前热点&#xff1f; 什么是数字化转型&…

云渲染可以渲动画吗?

云渲染可以渲动画吗&#xff1f; 首先我来回答你这个问题&#xff0c;云渲染当然可以渲动画啦&#xff01;像2022年暑期档最火的动画电影《新神榜&#xff1a;杨戬》就是在云渲染的支持下才能准时上线跟大家见面的哦&#xff01; Renderbus瑞云渲染和追光动画也是老朋友了&…

Android Jetpack Compose的附带效应

Android Jetpack Compose的附带效应 Jetpack Compose 是许多开发人员的首选&#xff0c;因为它具有有趣、简单、有效和直接的特性&#xff0c;并且能够轻松地以声明方式构建自定义组件。但是&#xff0c;要充分利用其功能&#xff0c;重要的是要很好地掌握副作用和效果处理程序…

十六、Java数据结构与算法 - 图

文章目录 一、图的基本介绍1.1 为什么要有图1.2 图的举例说明1.3 图的常用概念 二、图的表示方式2.1 邻接矩阵2.2 邻接表 三、图的快速入门案例四、图的遍历4.1 深度优先遍历DFS4.1.1 基本思想4.1.2 算法步骤4.1.3 图示 4.2 广度优先遍历BFS4.2.1 基本思想4.2.2 算法步骤4.2.3 …