Maven入门基础

来源:互联网 发布:网络促销手段 编辑:程序博客网 时间:2024/05/21 22:53

导言:从helloworld起步,所有关于maven的使用我们先让它在电脑上跑起来,先把理论放一放。不过在本博文中会穿插一些官方的参考文档,官文上会有很详细的说明

1.下载,安装,直接解压
官网地址:http://maven.apache.org/download.cgi
maven目录结构

开源软件的目录结构很重要,最好每个打开看一看,这里不做详细介绍

2.配置环境变量
M2_HOME = [maven所在的系统路径] (D:\SoftWare\apache-maven\apache-maven-3.3.9) 本机地址
PATH = %M2_HOME%/bin

3.测试安装和环境变量配置是否成功
在命令提示符窗口下输入
mvn –version

会显示如下信息,表示安装和配置都成功,即可以开始进行下一步操作了

Apache Maven 3.3.9 (bb52d8502b132ec0a5a3f4c09453c07478323dc5; 2015-11-11T00:41:47+08:00)Maven home: D:\SoftWare\apache-maven\apache-maven-3.3.9Java version: 1.8.0_31, vendor: Oracle CorporationJava home: C:\Java\jdk1.8.0_31\jreDefault locale: zh_CN, platform encoding: GBKOS name: "windows 8.1", version: "6.3", arch: "amd64", family: "dos"

4. maven使用前必须保证本机有java的运行环境
如以上信息 Java home: C:\Java\jdk1.8.0_31\jre

5.手动构建maven项目

1.在本机的D:\Test\MavenTest目录下新建一个文件夹maven-ch01 ,这个maven-ch01表示我们的项目文件夹。
2.在maven-ch01文件夹下新建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>  <groupId>com.model.maven</groupId>  <artifactId>maven-ch01</artifactId>  <version>1.0-SNAPSHOT</version>  <packaging>jar</packaging>   </project>

什么是POM?—–POM的官方参考
POM Reference

3.新建HelloMaven.java在 以下目录中
D:\Test\MavenTest\maven-ch01\src\main\java\com\model\maven

\src\main\java (maven识别的固定格式)
\com\model\maven (可以理解为包名)

package com.model.maven;public class HelloMaven{    public String sayHello(String name){        return "hello "+name;    }   }

4.打开命令提示符窗口 切到D:\Test\MavenTest\maven-ch01>
输入maven命令
mvn clean compile

这里写图片描述

看到[INFO]BUILD SUCCESS 表示编译成功
看到[INFO]BUILD FAILTUTE 失败,检查pom.xml,项目的文件结构或者java文件是否正确。

这时你会发现maven-ch01项目下多了一个target文件夹。这里面存有编译后的class文件

这里写图片描述

到此maven第一项目例子就搭建成功

5.对HelloMaven进行测试
i.在D:\Test\MavenTest\maven-ch01\src\test\java\com\model\maven
新建TestHelloMaven.java

\src\test\java 固定写法
\com\model\maven 包名

package com.model.maven;import org.junit.*;import static org.junit.Assert.*;public class TestHelloMaven{    @Test    public void testSayHello(){        HelloMaven hm = new HelloMaven();        String str = hm.sayHello("maven");        assertEquals(str,"hello:maven");    }   }

ii.打开命令提示符窗口 切到D:\Test\MavenTest\maven-ch01>
输入maven命令
mvn clean test

这里写图片描述

测试失败

原因:你没有导入org.junit包,当然无法正常运行
解决办法:用maven导包

iii.修改你的pom.xml配置文件。新加dependencies标签

<?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.model.maven</groupId>  <artifactId>maven-ch01</artifactId>  <version>1.0-SNAPSHOT</version>  <packaging>jar</packaging>    <dependencies>    <dependency>      <groupId>junit</groupId>      <artifactId>junit</artifactId>      <version>4.8.2</version>      <scope>test</scope>    </dependency>  </dependencies> </project>

iv.再次输入maven命令
mvn clean test
会到 Apache的Maven仓库中 download 你所需要的jar文件,然后放入本地上。默认存放路径 C:\Users\lenovo\.m2\repository (lenovo是用户名) 可以手动指定存放位置。
download

本地目录

v.命令窗口中看到 [INFO]BUILD SUCCESS 表示测试成功

vi.看到这里你应该感觉到了maven的用处之一了,jar包的集中管理。通过pom.xml可以从本地仓库(C:\Users\lenovo\.m2\repository)中引用你所需要的各种jar。(本地仓库中没有会先从网上load,不过因为是外网下载速度很慢)。所有pom.xml的配置尤为关键。

6.手动打包maven项目到本地仓库
1.打开命令提示符窗口
转到D:\Test\MavenTest\maven-ch01-> mvn clean package
打包后的jar文件在 \maven-ch01\target 目录下
jar

jar文件的命令规则是根据pom.xml生成的。
[artifactId]-[version].jar

观察jar文件,你会发现测试类并未打包进去,这是因为你在pom.xml中设置了依赖范围scope

<dependencies>    <dependency>      <groupId>junit</groupId>      <artifactId>junit</artifactId>      <version>4.8.2</version>      <scope>test</scope>    </dependency>  </dependencies>

scope:

compile(编译范围)

compile是默认的范围;如果没有提供一个范围,那该依赖的范围就是编译范

围。编译范围依赖在所有的classpath中可用,同时它们也会被打包。

provided(已提供范围)

provided依赖只有在当JDK或者一个容器已提供该依赖之后才使用。例如,如果

你开发了一个web应用,你可能在编译classpath中需要可用的Servlet API来编

译一个servlet,但是你不会想要在打包好的WAR中包含这个Servlet API;这个

Servlet API JAR由你的应用服务器或者servlet容器提供。已提供范围的依赖在

编译classpath(不是运行时)可用。它们不是传递性的,也不会被打包。

runtime(运行时范围)

runtime依赖在运行和测试系统的时候需要,但在编译的时候不需要。比如,你

可能在编译的时候只需要JDBC API JAR,而只有在运行的时候才需要JDBC驱动实

现。

test(测试范围)

test范围依赖 在一般的 编译和运行时都不需要,它们只有在测试编译和测试运

行阶段可用。

system(系统范围)

system范围依赖与provided类似,但是你必须显式的提供一个对于本地系统中

JAR文件的路径。这么做是为了允许基于本地对象编译,而这些对象是系统类库

的一部分。这样的构件应该是一直可用的,Maven也不会在仓库中去寻找它。。如

果你将一个依赖范围设置成系统范围,你必须同时提供一个systemPath元素。注

意该范围是不推荐使用的(你应该一直尽量去从公共或定制的Maven仓库中引用

依赖)。
2.打包完成后 ,将jar包放入到本地仓库
在命令提示窗口
转到 D:\Test\MavenTest\maven-ch01->mvn clean install

命令窗口中看到 [INFO]BUILD SUCCESS 表示install成功

到本地仓库(C:\Users\lenovo.m2\repository)中去寻找我们的jar

这里写图片描述

可以从目录结构中看到,目录结构生成规则也是依赖pom.xml
[groupId] \[artifactId]\[version]\xxx.jar

这样你就可以在其他的项目中使用这个jar文件只需要在pom.xml中配置

<dependencies>          <dependency>                    <groupId>com.model.maven</groupId>                        <artifactId>maven-ch01</artifactId>                        <version>1.0-SNAPSHOT</version>          </dependency>    </dependencies>  

补充
关于maven的详细学习,可以参考以下网站
Maven Tutorial
Maven in 5 Minutes
Maven Users Centre

0 0