Maven入门,读完这篇就够了(一)

简介: Maven入门,读完这篇就够了(一)

Maven概念



Maven作为一个构建工具,不仅能帮我们自动化构建,还能够抽象构建过程,提供构建任务实现;它跨平台,对外提供了一致的操作接口,这一切足以使它成为优秀的、流行的构建工具。


Maven不仅是构建工具,还是一个依赖管理工具和项目管理工具,它提供了中央仓库,能帮我自动下载构件。


maven的安装



一:因为本人是window系统,所以这里只介绍window下如何安装,在安装Maven之前,先确认已经安装了JDK.


image.png


二:接着去Maven官网下载界面下载想要的版本解压到你想要的目录就行


image.png

image.png


三:最后设置一下环境变量,将Maven安装配置到操作系统环境中,主要就是配置M2_HOME 和PATH两项,如图


image.png


都搞定后,验证一下,打开doc输入 mvn -v如何得到下面信息就说明配置成功了


image.png


maven目录



image.png


  • bin目录: 该目录包含了mvn运行的脚本,这些脚本用来配置java命令,准备好classpath和相关的Java系统属性,然后执行Java命令。


  • boot目录:  该目录只包含一个文件,该文件为plexus-classworlds-2.5.2.jar。plexus-classworlds是一个类加载器框架,相对于默认的java类加载器,它提供了更加丰富的语法以方便配置,Maven使用该框架加载自己的类库。


  • conf目录: 该目录包含了一个非常重要的文件settings.xml。直接修改该文件,就能在机器上全局地定制Maven的行为,一般情况下,我们更偏向于复制该文件至~/.m2/目录下(~表示用户目录),然后修改该文件,在用户范围定制Maven的行为。


  • lib目录: 该目录包含了所有Maven运行时需要的Java类库,Maven本身是分模块开发的,因此用户能看到诸如maven-core-3.0.jar、maven-model-3.0.jar之类的文件,此外这里还包含一些Maven用到的第三方依赖如commons-cli-1.2.jar、commons-lang-2.6.jar等等。


Maven常用命令说明



mvn clean:表示运行清理操作(会默认把target文件夹中的数据清理)。


mvn clean compile:表示先运行清理之后运行编译,会将代码编译到target文件夹中。

mvn clean test:运行清理和测试。


mvn clean package:运行清理和打包。


mvn clean install:运行清理和安装,会将打好的包安装到本地仓库中,以便其他的项目可以调用。


mvn clean deploy:运行清理和发布(发布到私服上面)。


上面的命令大部分都是连写的,大家也可以拆分分别执行,这是活的,看个人喜好以及使用需求,Eclipse Run as对maven项目会提供常用的命令。


设置http代理



编辑seeting.xml文件 有时候你所在的公司基于安全因素考虑,要求你使用通过安全认证的代理访问因特网。这种情况下,就需要为Maven配置HTTP代理,才能让它正常访问外部仓库,以下载所需要的资源。首先确认自己无法直接访问公共的maven中央仓库,直接运行命令ping repo1.maven.org可以检查网络。如果真的需要代理,先检查一下代理服务器是否畅通。比如现在有一个IP地址为218.14.227.197,端口为3128的代理服务,我们可以运行telnet 218.14.227.197 3128来检测该地址的该端口是否畅通。如果得到出错信息,需要先获取正确的代理服务信息,如果telnet连接正确,则输入ctrl+],然后q,回车,退出即可。


检查完毕之后,编辑~/.m2/settings.xml文件(如果没有该文件,则复制$M2_HOME/conf/settings.xml)。添加代理配置如下:


<settings>  
  ...  
  <proxies>  
    <proxy>  
      <id>my-proxy</id>  
      <active>true</active>  
      <protocol>http</protocol>  
      <host>218.14.227.197</host>  
      <port>3128</port>  
      <!--  
        <username>***</username>  
        <password>***</password>  
        <nonProxyHosts>  
          repository.mycom.com|*.google.com  
        </nonProxyHosts>  
      -->  
    </proxy>  
  </proxies>  
  ...  
</settings> 
复制代码


这段配置十分简单,proxies下可以有多个proxy元素,如果声明了多个proxy元素,则默认情况下第一个被激活的proxy会生效。这里声明了一个id为my-proxy的代理,active的值为true表示激活该代理,protocol表示使用的代理协议,这里是http。当然,最重要的是指定正确的主机名(host元素)和端口(port元素)。上述xml配置中注释掉了username,password,nonProxyHosts几个元素。当代理服务需要认证时,就需要配置username和password。nonProxyHost元素用来指定哪些主机不需要代理,可以使用"|"符号来分隔多个主机名。此外,该配置也支持通配符,如:*.google.com表示所有以google.com结尾的域名访问都不要通过代理。


Maven插件安装,基于IDEA



博主现在使用IDEA来开发的,所以这里介绍一下IDEA中如何配置引入我们上面下载好的Maven


image.png


Maven使用



<?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>
    <groupId>com.tengj</groupId>
    <artifactId>springBootDemo1</artifactId>
    <version>0.0.1-SNAPSHOT</version>
    <name>springBootDemo1</name>
</project>
复制代码


代码的第一行是XML头,指定了该xml文档的版本和编码方式。 project是所有pom.xml的根元素,它还声明了一些POM相关的命名空间及xsd元素。 根元素下的第一个子元素modelVersion指定了当前的POM模型的版本,对于Maven3来说,它只能是4.0.0 代码中最重要是包含了groupId,artifactId和version了。这三个元素定义了一个项目基本的坐标,在Maven的世界,任何的jar、pom或者jar都是以基于这些基本的坐标进行区分的。


groupId定义了项目属于哪个组,随意命名,比如谷歌公司的myapp项目,就取名为 com.google.myapp


artifactId定义了当前Maven项目在组中唯一的ID,比如定义hello-world。


version指定了项目当前的版本0.0.1-SNAPSHOT,SNAPSHOT意为快照,说明该项目还处于开发中,是不稳定的。


name元素生命了一个对于用户更为友好的项目名称,虽然这不是必须的,但还是推荐为每个POM声明name,以方便信息交流


依赖的配置


<project>
...
<dependencies>
    <dependency>
        <groupId>实际项目</groupId>
&emsp;&emsp;&emsp;&emsp; <artifactId>模块</artifactId>
&emsp;&emsp;&emsp;&emsp; <version>版本</version>
&emsp;&emsp;&emsp;&emsp; <type>依赖类型</type>
&emsp;&emsp;&emsp;&emsp; <scope>依赖范围</scope>
&emsp;&emsp;&emsp;&emsp; <optional>依赖是否可选</optional>
&emsp;&emsp;&emsp;&emsp; <!—主要用于排除传递性依赖-->
&emsp;&emsp;&emsp;&emsp; <exclusions>
&emsp;&emsp;&emsp;&emsp;     <exclusion>
&emsp;&emsp;&emsp;&emsp;&emsp;&emsp;&emsp;    <groupId>…</groupId>
&emsp;&emsp;&emsp;&emsp;&emsp;&emsp;&emsp;&emsp;&emsp; <artifactId>…</artifactId>
&emsp;&emsp;&emsp;&emsp;&emsp;&emsp;&emsp;</exclusion>
&emsp;&emsp;&emsp;&emsp; </exclusions>
&emsp;&emsp;</dependency>
<dependencies>
...
</project>
复制代码


根元素project下的dependencies可以包含一个或者多个dependency元素,以声明一个或者多个项目依赖。每个依赖可以包含的元素有:


  • grounpId、artifactId和version:以来的基本坐标,对于任何一个依赖来说,基本坐标是最重要的,Maven根据坐标才能找到需要的依赖。
  • type:依赖的类型,对于项目坐标定义的packaging。大部分情况下,该元素不必声明,其默认值为jar
  • scope:依赖的范围
  • optional:标记依赖是否可选
  • exclusions:用来排除传递性依赖


目录
相关文章
|
3月前
|
XML 前端开发 Java
SpringMVC入门到实战------2、SpringMVC创建实例Hello SpringMVC(maven+tomcat)
这篇文章是SpringMVC框架的入门教程,详细指导了如何在IDEA中使用Maven和Tomcat创建SpringMVC工程,包括添加依赖、配置web.xml、编写控制器、创建配置文件、配置Tomcat服务器以及进行基本的测试,展示了一个简单的Hello SpringMVC示例。
SpringMVC入门到实战------2、SpringMVC创建实例Hello SpringMVC(maven+tomcat)
|
6月前
|
Java Apache Maven
【Maven从入门到如土】Maven 核心程序解压和配置
【Maven从入门到如土】Maven 核心程序解压和配置
106 0
|
6月前
|
Java 应用服务中间件 Maven
【Maven从入门到如土】创建 Maven 版的 Web 工程
【Maven从入门到如土】创建 Maven 版的 Web 工程
89 0
|
6月前
|
Java Maven
【Maven从入门到如土】如何在Maven工程中编写代码并执行构建
【Maven从入门到如土】如何在Maven工程中编写代码并执行构建
72 0
|
6月前
|
存储 JavaScript Java
【Maven从入门到如土】快速使用 Maven:命令行环境
【Maven从入门到如土】快速使用 Maven:命令行环境
106 0
|
6月前
|
IDE Java 程序员
【Maven从入门到如土】Maven概述
【Maven从入门到如土】Maven概述
55 0
|
IDE Java 应用服务中间件
idea入门与maven配置的一些介绍
idea入门与maven配置的一些介绍
114 0
|
XML 存储 Java
maven的入门使用
maven的入门使用
59 0
|
人工智能 JavaScript Java
2. 使用IDEA创建Spring Boot Hello项目并管理依赖——Maven入门指南
2. 使用IDEA创建Spring Boot Hello项目并管理依赖——Maven入门指南
488 0
|
Java 应用服务中间件 数据库连接
Maven入门案例实战
Maven入门案例实战
133 0