首页 > 其他分享 >Maven学习总结(一)——Maven入门

Maven学习总结(一)——Maven入门

时间:2023-05-29 12:39:48浏览次数:47  
标签:总结 java 入门 项目 jar Maven 所示 目录


一、Maven的基本概念

Maven(翻译为"专家","内行")是跨平台的项目管理工具。主要服务于基于Java平台的项目构建,依赖管理和项目信息管理

1.1、项目构建

  项目构建过程包括【清理项目】→【编译项目】→【测试项目】→【生成测试报告】→【打包项目】→【部署项目】这几个步骤,这六个步骤就是一个项目的完整构建过程。

  

Maven学习总结(一)——Maven入门_java


 

  理想的项目构建是高度自动化,跨平台,可重用的组件,标准化的,使用maven就可以帮我们完成上述所说的项目构建过程。

1.2、依赖管理

  依赖指的是jar包之间的相互依赖,比如我们搭建一个Struts2的开发框架时,光光有struts2-core-2.3.16.3.jar这个jar包是不行的,struts2-core-2.3.16.3.jar还依赖其它的jar包,依赖管理指的就是使用Maven来管理项目中使用到的jar包,Maven管理的方式就是“自动下载项目所需要的jar包,统一管理jar包之间的依赖关系”。

1.3、使用Maven的好处

  Maven中使用约定,约定java源代码代码必须放在哪个目录下,编译好的java代码又必须放到哪个目录下,这些目录都有明确的约定。

  Maven的每一个动作都拥有一个生命周期,例如执行 mvn install 就可以自动执行编译,测试,打包等构建过程

  只需要定义一个pom.xml,然后把源码放到默认的目录,Maven帮我们处理其他事情

  使用Maven可以进行项目高度自动化构建,依赖管理(这是使用Maven最大的好处),仓库管理。

二、Maven下载

  下载地址:http://maven.apache.org/download.cgi

  

Maven学习总结(一)——Maven入门_jar包_02


 

  下载完成后,得到一个压缩包,解压,可以看到maven的组成目录

  

Maven学习总结(一)——Maven入门_java_03


 

  Maven目录分析

  • bin:含有mvn运行的脚本
  • boot:含有plexus-classworlds类加载器框架
  • conf:含有settings.xml配置文件
  • lib:含有Maven运行时所需要的java类库
  • LICENSE.txt, NOTICE.txt, README.txt针对Maven版本,第三方软件等简要介绍

三、Maven安装

  1、首先要确保电脑上已经安装了JDK(要jdk 1.6+的版本),配置好JDK的环境变量,使用如下的两个命令检查检查JDK安装的情况。


1 Echo %JAVA_HOME%
2 Java -version

  

Maven学习总结(一)——Maven入门_java文件_04


 

  2、对apache-maven-3.3.9-bin.zip进行解压缩(解压目录最好不要有中文)

  

  3、设置系统环境变量:MAVEN_HOME

  

Maven学习总结(一)——Maven入门_java文件_05


 

  4、设置环境变量Path,将%MAVEN_HOME%\bin加入Path中,一定要注意要用分号;与其他值隔开,如下图所示:

  

Maven学习总结(一)——Maven入门_java文件_06


 

  %MAVEN_HOME%\bin代表的就是"C:\Development\apache-maven-3.3.9\bin"目录

  5、验证Maven安装是否成功

cmd窗口

  

Maven学习总结(一)——Maven入门_java文件_07


 

mvn –v"命令 查看Maven的相关信息,如下图所示:

  

Maven学习总结(一)——Maven入门_maven_08


 

  能够出现这样的信息就说明Maven的安装已经成功了。

  6、设置MAVEN_OPTS环境变量(可选配置)

  由于Maven命令实际上是执行了Java命令,所以可以通过JAVA命令参数的方式来设置MAVEN运行参数。MAVEN_OPTS环境变量正是用于此用途

  MAVEN_OPTS

  -Xms128m -Xmx512m,分别设置JVM的最小和最大内存,如下图所示:

  

Maven学习总结(一)——Maven入门_maven_09


 

四、Maven的简单使用

4.1、Maven项目的目录约定

MavenProjectRoot(项目根目录)
   |----src
   |     |----main
   |     |         |----java ——存放项目的.java文件
   |     |         |----resources ——存放项目资源文件,如spring, hibernate配置文件
   |     |----test
   |     |         |----java ——存放所有测试.java文件,如JUnit测试类
   |     |         |----resources ——存放项目资源文件,如spring, hibernate配置文件
   |----target ——项目输出位置
   |----pom.xml ----用于标识该项目是一个Maven项目

4.2、手动创建Maven项目,使用Maven编译

  1、创建项目根文件夹,例如Maven01

  

  2、在Maven01文件夹中创建“pom.xml”文件,如下图所示:

  

Maven学习总结(一)——Maven入门_jar包_10


 

  pom.xml文件中的内容如下:


1 <?xml version="1.0" encoding="UTF-8"?>
 2 <project xmlns="http://maven.apache.org/POM/4.0.0" 
 3 xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
 4 xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 
 5 http://maven.apache.org/xsd/maven-4.0.0.xsd">
 6     <!--所有的Maven项目都必须配置这四个配置项-->
 7     <modelVersion>4.0.0</modelVersion>
 8     <!--groupId指的是项目名的项目组,默认就是包名-->
 9     <groupId>com.jaeson.maven</groupId>
10     <!--artifactId指的是项目中的某一个模块,默认命名方式是"项目名-模块名"-->
11     <artifactId>hello-first</artifactId>
12     <!--version指的是版本,这里使用的是Maven的快照版本-->
13     <version>SNAPSHOT-0.0.1</version>
14 </project>


  3.编写Java类文件,Maven项目规定,所有的*.java文件必须放在src目录下的main目录下的java目录中,在Maven01项目根目录中创建一个src目录,然后在src目录中创建main目录,在main目录中再创建java文件夹,如下图所示:

  

Maven学习总结(一)——Maven入门_jar包_11


 

  在java文件夹下创建一个Hello.java文件

  

  在HelloWorld.java文件中编写如下代码:


1 public class HelloWorld{
2     public static void main(String[] args){
3         System.out.println("Hello Maven");
4     }
5 }


mvn compile”进行编译,如下图所示:

  

Maven学习总结(一)——Maven入门_java_12


 

Maven学习总结(一)——Maven入门_java文件_13


  

  使用Maven编译完成之后,在项目根目录下会生成一个target文件夹。

  
   打开target文件夹,可以看到里面有一个classes文件夹,如下图所示:

  

Maven学习总结(一)——Maven入门_jar包_14

  classes文件夹存放的就是编译成功后生成的.class文件,如下图所示:

  

Maven学习总结(一)——Maven入门_java_15


 

mvn clean"命令清除编译结果,也就是把编译生成的target文件夹删掉,如下图所示:

  

Maven学习总结(一)——Maven入门_java_16


 

"mvn clean"命令后,target文件夹就会被删除了。

五、修改从Maven中心仓库下载到本地的jar包的默认存储位置

  从Maven中心仓库下载到本地的jar包的默认存放在”${user.home}/.m2/repository”中,${user.home}表示当前登录系统的用户目录(如"C:\Users\gacl"),如下图所示

  

Maven学习总结(一)——Maven入门_java文件_17


 

  Jar包存放在这个位置不太好,我们希望能够自己定义下载下来的jar包的存放位置,因此我们可以自己设置下载到本地时的jar包的存放目录。

  在“E:\”目录下创建一个“repository”文件夹

  

Maven学习总结(一)——Maven入门_java文件_18


 

  找到apache-maven-3.2.3\conf目录下的settings.xml文件,如下图所示:

  

Maven学习总结(一)——Maven入门_java文件_19


 

  编辑setting.xml文件,如下图所示:

  

Maven学习总结(一)——Maven入门_maven_20


 

  加上下面的代码


1 <localRepository>E:/repository</localRepository>

  

Maven学习总结(一)——Maven入门_jar包_21


 

  这样就可以把jar包下载到我们指定的E:/repository目录中了,如下图所示:

  

Maven学习总结(一)——Maven入门_jar包_22


 

  把jar包下载到本地的好处就是,当编译时,会优先从本地的jar包去找,如果本地存在,就直接拿来用,如果不存在,就从Maven的中心仓库去下载。如下图所示:

  

Maven学习总结(一)——Maven入门_java文件_23


 

  第一次执行"mvn compile"和"mvn clean"这两个命令时,Maven会去中央仓库下载需要的jar包,而第二次执行这两个命令时,由于所需的jar包已经在本地的仓库中存储,所以就可以直接拿来用了,这样就省去了去中央仓库下载jar包的时间。

 

标签:总结,java,入门,项目,jar,Maven,所示,目录
From: https://blog.51cto.com/u_16131764/6370047

相关文章

  • Maven 打包时丢失xml、properties文件
        maven执行package命令打包时,src/main/java路径下的xml和properties都没打进来。      解决方式:pom.xml中加入resources配置 <build><resources><resource><directory>src/main/java</directory><includes>......
  • java虚拟机总结
     类型的生命周期:java虚拟机通过装载、连接和初始化一个java类型,使该类型可以被正在运行的java程序所使用。装载:是把二进制形式的java类型读入java虚拟机中。连接:是把读入的二进制形式的类型数据合并到虚拟机的运行时状态中去。连接分三个子步骤(验证、准      备和解析......
  • Spark入门看这篇就够了(万字长文)
    本文已收录至Github,推荐阅读......
  • 交换机策略路由、Track与NQA联动配置总结
    一、  组网需求:SwitchA、SwitchB、SwitchC两两互联,在SwitchA上配置策略路由,使不同的业务流量报文转发到不同的网段。SwitchA作为10.1.1.0/24网段内主机的缺省网关,配置20.1.1.0/24网段的静态路由指向SwitchB,并配置静态路由使SwitchA、SwitchB、SwitchC所有直连网段能......
  • Isito 入门:为什么学 Istio、Istio 是什么
    1,Istio概述......
  • ctfshow刷题笔记-misc入门
    ctfshow-misc入门图片篇(文件结构)misc241.在010Editor中打开文件,根据鼠标自动提示找到图片宽高对应的地方biWidth指定图象的宽度,单位是象素。biHeight指定图象的高度,单位是象素。2.修改图片高度为250px并另存3.打开后得到flagmisc251.从网上找到的脚本(将脚本和图片......
  • 团队项目总结(事后诸葛亮)
    我们的软件一开始的首要目的就是实现人像衣像的结合,从而达到虚拟试衣的目标。整体方向还算很清楚,但却是缺乏对典型用户和典型场景精确的描述。项目实施之前并没有制定太多的计划,这就直接导致后续遇到问题的时候比较手足无措。当遇到团队成员意见分歧时,我们一般通过商讨采用最直......
  • 课程总结
    我不知不觉已经度过了大二,本学期的课程也迎来了结束。回想这学期刚开始的时候,老师要求我们写一篇开课博客,好好规划一下本学期。在我的开课博客中,我计划本学期将一些普遍的框架熟悉一下,在这之后的大部分Web项目中,我都采用框架的形式去构建,采用MVC架构去编写每一个项目。比如本学期......
  • Node模块导入规则总结
    @目录node模块总结node模块引入的步骤:模块分类node支持的模块系统ESModuleCommonJS模块加载CommonJS模块引入路径分析文件定位带扩展名的文件定位不带扩展名的文件定位ESM模块引入路径分析文件定位带路径不带路径(裸说明符)模块加载器总结对比CommonJS模块加载器ECMAScript模块加......
  • 异步总结
    @目录Promise对于Promise的理解解决的难点(相对于回调方式的异步)不同的方向理解(使用)PromisePromise构造then(..)和catch(..)判别Promise类型:具有then方法的类型(thenable鸭子类型)Promise局限性生成器概述使用方式特性迭达器与可迭达(迭达对象)生成器,迭达器,可迭达生成器与异步解决......