关于maven

一、maven是什么

一个java项目构建工具

二、maven的作用

(1)依赖管理

不同框架整合,互相依赖jar包版本不同,版本不一样,程序跑起来就会报错。用maven管理jar包。

(2)跨平台构建项目

linux服务器上跑起来和我们在windows开发上跑出来的结果不一样。比如getBytes方法运行结果不一样,用maven解决这个问题。

(3)统一开发目录结构统一

不同ide工具,如eclipse、idea、jetbrains开发生成的项目文件结构不一样。用maven统一目录。

maven标准的结构如下:

三、简单了解maven

(1)maven的构成组件

pom、dependency

(2)pom

opm叫项目对象模型。maven把一个项目看成一个对象

(3)dependency

dependency叫依赖管理

(4)构成组件的关系

(5)构建生命周期

四、maven的安装配置

1.下载解压

Maven – 下载 Apache Maven

2.配置环境变量

需要先配置java环境,再配置:

MAVEN_HOME——>E:\apache-maven-3.8.5

PATH添加——>%MAVEN_HOME%\bin

3.测试是否配置好了

打开cmd输入mvn

五、maven的仓库

(1)分类

本地仓库、私服(一般是局域网内的maven仓库,一个公司一个团队的仓库,很多是公司自有不开源的jar包)、中央仓库(maven官方仓库,想要的jar包都有,类似于应用商店)

中央仓库网址:https://mvnrepository.com

(2)三类仓库之间的关系

 

获取jar包过程是,先在本地仓库找,没有就到私服找,私服没有才从中央仓库获取。

(3)配置本地仓库

默认仓库是C:\用户\当前用户名\.m2,存东西最好不要存C盘。要改为D:\myMaven\cangku的办法:

修改apache-maven-3.8.5/conf/settings.xml


把settings标签下的localRepository标签内的属性改一下,改成下面:

 <localRepository>D:\myMaven\cangku</localRepository>

(4)配置中央仓库

目的:配置国内镜像,加速访问中央仓库

原因:中央仓库站点在国外,下载慢,所以要加速

配置方法:修改apache-maven-3.8.5/conf/settings.xml在mirrors标签里面填加下面内容

<!--配置具体的仓库的下载镜像-->

<mirror>
<!--此镜像的唯一标识符,用来区分不同的mirror元素-->
<id>nexus-aliyun</id>
<!--对哪种仓库进行镜像,简单说就是替代哪个仓库-->
<mirrorOf>central</mirrorOf>
<!--镜像名称-->
<name>Nexus aliyun</name>
<!--镜像URL-->
<url>http: //maven.aliyun.com/nexus/content/groups/public</url>
</mirror>

六、maven的坐标

(1)坐标是什么

描述仓库中资源的位置

(2)坐标的作用

maven会根据坐标找到并下载(如果不在本地),对应的资源

(3)坐标包含元素

groupid、artifactid、version

groupid:所有者团队。一般是域名反写,如:com.baidu

artifactid:项目名

version:当前项目版本号

(4)坐标的写法

比如,我想知道junit的坐标写法 

找到想要的版本,点进去

复制即可

七、第一个maven项目(手工方式创建)

(1)创建项目目录结构

先创建一个“porject-helloWorld”的项目根文件夹,然后在porject-helloWorld下创建下图的项目目录结构

(2)编写代码

main>java>com>eCorp>HelloWorld.java


package com.eCorp;


import java.lang.String;

public class HelloWorld{
public String sayHello(){
return "hello world";
}
}

test>java>TestDemo.java


import com.eCorp.HelloWorld;
import org.junit.Assert;
import org.junit.Test;

public class TestDemo{
    @Test
public void testHelloWorld(){
HelloWorld helloWorld =new HelloWorld();
Assert.assertEquals("hello world", helloWorld.sayHello());
}

}

(3)添加pom.xml

办法:找一个pom.xml文件模板,然后进行修改即可

步骤:

1.用winrar随便打开一个E:\apache-maven-3.8.5\lib下的jar,然后返回上级目录,搜索pom.xml

 结果会有很多pom.xml,随便找一个打开复制过来

2.在项目根文件夹下创建pom.xml,把复制内容拷贝过来

3.修改pom.xml

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" 
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 
         http://maven.apache.org/xsd/maven-4.0.0.xsd">
  <modelVersion>4.0.0</modelVersion>  <!--pom模型版本-->
 
  <groupId>com.eCorp</groupId>

  <name>project-helloWorld</name>
  <artifactId>project-helloWorld</artifactId>
  <version>1.0</version>
  <packaging>jar</packaging>         <!--生成结果保存形式-->

 
 
  <properties>
    <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
  </properties>
 
  <dependencies>
    <dependency>
    <!--在中央仓库搜索junit,然后把坐标写法复制过来 -->
      <groupId>junit</groupId>
      <artifactId>junit</artifactId>
      <version>3.8.1</version>
      <scope>test</scope>
    </dependency>
  </dependencies>
</project>

(4)构建maven项目

第一步:编译

步骤:

打开cmd输入:cd 项目根文件夹路径

然后输入:mvn compile

编译报错:

[ERROR] COMPILATION ERROR :
[INFO] -------------------------------------------------------------
[ERROR] 不再支持源选项 5。请使用 7 或更高版本。
[ERROR] 不再支持目标选项 5。请使用 7 或更高版本。
[INFO] 2 errors

产生原因:maven默认是使用jdk1.4编译的。比本地安装jdk版本低就会报错

解决办法:

比如我本地安装的是jdk17,就把下面代码放到E:\apache-maven-3.8.5\conf\pom.xml里的  <profiles>标签里面

<profile>  
     <id>jdk-17</id>  
     <activation>  
         <activeByDefault>true</activeByDefault>  
         <jdk>17</jdk>  
     </activation>
     <properties>
         <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
         <maven.compiler.source>17</maven.compiler.source>  
         <maven.compiler.target>17</maven.compiler.target>   
     </properties>   
</profile>

编译结果:编译成功会在项目根文件夹下生成一个叫target的文件,编译的.class字节码文件都在里面

第二步(可选):清理编译结果

mvn clean        //会删除target文件

第三步:测试

mvn test           //执行test测试文件夹里面的java代码,并生成测试报告

测试报告—基本信息位置:项目名\target\surefire-reports\TestDemo.txt

测试报告—详细信息位置:项目名\target\surefire-reports\TEST-TestDemo.xml

第四步:打包

mvn package       //打包项目成jar文件,在target下生成project-helloWorld-1.0.jar

第五步:把打包结果放到本地仓库

mvn install         //存放位置:本地仓库文件夹\com\eCorp<groupId>】\project-helloWorld<artifactId>】\1.0<version>】\project-helloWorld-1.0.jar

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

数据结构学习记录——堆的建立(最大堆的建立、思路图解、代码实现、代码解释)

目录 最大堆的建立 方法1 方法2 思路图解 代码实现 代码解释 PercDown BuildHeap 最大堆的建立 建立最大堆&#xff1a;将已经存在的N个元素按最大堆的要求存放在一个一维数组中。 方法1 通过插入操作&#xff0c;将N个元素一个一个地插入到一个初始为空的堆中去。…

简述对象检测与图像分类与关键点检测区别

计算机视觉是人工智能的一个多元化领域&#xff0c;旨在检测和识别图像或视频的内容。大多数开始计算机视觉领域之旅的人的常见问题之一是&#xff1a;目标检测、图像分类和关键点检测之间有什么区别&#xff1f; 让我们先看看 什么是对象检测 对象检测是一种计算机视觉和图像…

excel中英文互译

在excel运行宏时弹出下面的提示&#xff1a; 无法运行“XXXXX”宏。可能是因为该宏在此工作薄中不可用&#xff0c;或者所有的宏都被禁用的错误提示 解决办法&#xff1a; 1、点击“文件”选项卡&#xff1b; 2、在选项卡界面窗口中选择“选项”按钮&#xff1b; 3、在“选项…

JavaScript实现在键盘输入按键,浏览器进行显示的代码

以下为实现在键盘输入按键&#xff0c;浏览器进行显示的代码和运行截图 目录 前言 一、在键盘输入按键&#xff0c;浏览器进行显示 1.1 运行流程及思想 1.2 代码段 1.3 JavaScript语句代码 1.4 运行截图 前言 1.若有选择&#xff0c;您可以在目录里进行快速查找&#xf…

智能汽车实验二(视觉传感器标定)

实验二 视觉传感器标定&#xff08;实验报告&#xff09; 【实验目的】 1、了解开源图像处理库OpenCV的结构&#xff0c;掌握OpenCV的基本使用方法。 2、了解开源图像处理库OpenCV的基本模块功能&#xff0c;掌握常用图像处理方法。 3、掌握摄像机标定算法&#xff0c;学会使用…

igraph的layout布局

做图论的社区检测&#xff0c;需要画图显示&#xff0c;用igraph可以进行可视化。 igraph有几个布局&#xff0c;分别如下&#xff1a; layout_with_dh &#xff1a; The Davidson-Harel layout algorithm Place vertices of a graph on the plane, according to the simulat…

113-Linux_安装c/c++开发库及连接mysql数据库

文章目录 一.安装c/c开发库二.连接mysql数据库三.用户的管理与授权 mysql数据库的安装 一.安装c/c开发库 安装开发c/c的库&#xff0c;命令&#xff1a;apt install libmysqlclient-dev 二.连接mysql数据库 #include<stdio.h> #include<mysql/mysql.h>void fun…

Python+Selenium4环境搭建

set集合 怎么把列表种相同的数据和不同的数据取出来 1.把列表转为set集合 2.按照集合的交集 selenium 自动化测试&#xff1a;自动化测试就是通过代码或者是工具模拟人的行为来进行对WEB&#xff08;APP&#xff09;来进行操作。 QTP (HP公司)&#xff1a;以录制回放的模式…

CSS进阶

01-复合选择器 定义&#xff1a;由两个或多个基础选择器&#xff0c;通过不同的方式组合而成。 作用&#xff1a;更准确、更高效的选择目标元素&#xff08;标签&#xff09;。 后代选择器 后代选择器&#xff1a;选中某元素的后代元素。 选择器写法&#xff1a;父选择器 …

学系统集成项目管理工程师(中项)系列19b_成本管理(下)

1. 成本估算 1.1. 编制完成项目活动所需资源的大致成本 1.2. 在设计阶段多做些额外的工作可能减少执行阶段和产品运行时的成本 1.3. 项目估算的准确性随着项目的进展而提高 1.3.1. 【19下选48】 1.4. 针对完成活动所需资源的可能成本进行的量化评估 1.5. 容易被忽视的主要…

华为pbr双出口外线,指定内网单个vlan绑定单个出口外线上网

公司两条外线&#xff0c;vlan 10用nat走上面转发出去上网&#xff0c;vlan 20 走下面那条外线出去nat上网 AR2&#xff1a; interface GigabitEthernet0/0/0 ip address 6.6.6.1 255.255.255.0 interface GigabitEthernet0/0/1 ip address 154.1.2.3 255.255.255.0 interface…

JavaScript通过js的方式来判断一个数奇偶性的代码

以下为通过js的方式来判断一个数奇偶性的程序代码和运行截图 目录 前言 一、通过js的方式来判断一个数奇偶性&#xff08;html部分&#xff09; 1.1 运行流程及思想 1.2 代码段 二、通过js的方式来判断一个数奇偶性&#xff08;js部分&#xff09; 2.1 运行流程及思想 2…

Linux操作系统如何查看CPU型号信息?一条命令搞定

Linux操作系统服务器如何查看CPU处理器信息&#xff1f;使用命令cat /proc/cpuinfo可以查看CPU详细信息&#xff0c;包括CPU核数、逻辑CPU、物理CPU个数、CPU是否启用超线程等&#xff0c;阿里云服务器网分享Linux服务器查看CPU信息命令&#xff1a; 目录 Linux服务器查看CPU…

2023年贵州省职业技能大赛“网络安全” 项目比赛任务书

2023年贵州省职业技能大赛“网络安全” 项目比赛任务书 三、竞赛任务书内容 &#xff08;一&#xff09;拓扑图 &#xff08;二&#xff09;A模块基础设施设置/安全加固&#xff08;200分&#xff09; 一、项目和任务描述&#xff1a; 假定你是某企业的网络安全工程师&…

【Linux】Linux安装Redis(图文解说详细版)

文章目录 前言第一步&#xff0c;下载安装包第二步&#xff0c;上传安装包到/opt下&#xff08;老规矩了&#xff0c;安装包在opt下&#xff09;第三步&#xff0c;解压安装包第四步&#xff0c;编译第五步&#xff0c;安装第六步&#xff0c;配置redis第七步&#xff0c;设置开…

迁移学习

迁移学习 什么是迁移学习 迁移学习【斯坦福21秋季&#xff1a;实用机器学习中文版】 迁移学习&#xff08;Transfer Learning&#xff09;是一种机器学习方法&#xff0c;它通过将一个领域中的知识和经验迁移到另一个相关领域中&#xff0c;来加速和改进新领域的学习和解决问…

“土狗”的季节,meme热潮回归

文/章鱼哥 出品/陀螺财经 meme代币的热度好像又回来了&#xff0c;两周前推出的PEPE创下了历史新高。尽管加密货币市场仍处于漫长熊市中&#xff0c;但人们似乎仍然对风险投资保有兴趣。 meme代币作为基于互联网模因的高波动数字资产&#xff0c;似乎没有太多实用性。它们的价格…

AI仿写软件-仿写文章生成器

AI仿写软件&#xff1a;高效出色的营销利器 作为互联网时代的营销人员&#xff0c;我们不仅需要品牌意识&#xff0c;还必须深谙营销技巧。万恶的时限压力使得我们不得不在有限的时间内输出更多的文本内容&#xff0c;以便吸引更多的关注。那么&#xff0c;如何解决这个问题呢…

基数树RadixTree

转自&#xff1a;基数树RadixTree - 知乎 1. 基数树概述 对于长整型数据的映射&#xff0c;如何解决Hash冲突和Hash表大小的设计是一个很头疼的问题。radix树就是针对这种稀疏的长整型数据查找&#xff0c;能快速且节省空间地完成映射。借助于Radix树&#xff0c;我们可以实现…

用chatgpt实现 java导出excel复杂表。

记录一次使用chatgpt解决实际问题的&#xff0c;需求是在页面添加一个订单导出excel的功能&#xff0c;订单编号、订单明细&#xff0c;相同订单编号合并单元格&#xff0c;模板如下 表头表尾不用说&#xff0c; 主要是表格内容部分&#xff0c;左边是订单编号&#xff0c;右边…