maven使用(一)

在官网上下载maven的包http://maven.apache.org/download.cgi

下载压缩包apache-maven-3.3.9-bin.zip

在环境变量中新建变量:

M2-HOME=D:\apache-maven-3.3.9-bin\apache-maven-3.3.9

配置path,添加路径

path=D:\apache-maven-3.3.9-bin\apache-maven-3.3.9\bin

 

然后再cmd中输入命令:mvn -v 可以查看maven的版本

现在就已经安装成功啦!

mvn的一些指令:

mvn compile                    编译

mvn test                    编译并测试 

mvn clean                    清空生成的文件 

mvn package          打包

mvn install    是把打出的包装载到本地仓库

 

pom.xml文件

<?mxl 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/maven-v4_0_0.xsd">
    <modelVersion>4.0.0</modelVersion>
    <groupId>com.xidian.test</groupId>
    <artifactId>first_maven_test</artifactId>
    <version>0.0.1-SNAPSHOT</version>
  
  <dependencies>
       <dependency>
               <groupId>junit</groupId>
               <artifactId>junit</artifactId>
               <version>4.10</version>

       </dependency>

  </dependencies>
</project>

GroupID是项目组织唯一的标识符,实际对应Java的包的结构

ArtifactID就是项目的唯一的标识符,实际对应项目的名称,就是项目根目录的名称。

在另一个项目中引用前一个模块的包。只需要加入一个<dependency>

同时 mvn install前一个模块将其打包装载到本地仓库。

<?mxl 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/maven-v4_0_0.xsd">
    <modelVersion>4.0.0</modelVersion>
    <groupId>com.xidian.test2</groupId>
    <artifactId>second_maven_test</artifactId>
    <version>0.0.1-SNAPSHOT</version>
  
  <dependencies>
       <dependency>
               <groupId>junit</groupId>
               <artifactId>junit</artifactId>
               <version>4.10</version>
       </dependency>
     <dependency>
             <groupId>com.xidian.test</groupId>
                <artifactId>first_maven_test</artifactId>
                <version>0.0.1-SNAPSHOT</version> 
     </dependency>

  </dependencies>
</project>

maven会现在本地仓库中找文件,如果没有找到就到网络中的中央仓库汇总去找。

本地仓库的位置:C:\Users\DELL\.m2\repository

修改默认本地仓库的位置:apache-maven-3.3.9-bin\apache-maven-3.3.9\conf\settings.xml

 

在apache-maven-3.3.9-bin\apache-maven-3.3.9\lib\maven-model-builder-3.3.9.jar中的 

pom-4.0.0.xml文件中有中央仓库的地址

https://repo.maven.apache.org/maven2/

 

eclipse中使用maven:

在eclipse中配置自己安装的maven,不用eclipse自带的。

然后更改User Setting配置:

 

创建一个maven Project

 

 archtetype是maven的骨架,这里选择quickstart

 

输入项目名称和模块名称:

生成的文件结构:

 

 

 <scope>指定依赖的范围:

1.test 是指只在测试范围内有效,编译和打包的时候不会使用这个依赖。

    如junit包,dbunit包,打包之后对应用没有作用且影响加载速度。

        且只能作用于src/test中。

2.compile(默认)

    编译范围内有效,在编译和打包的时候都会讲依赖加载进去。

3.provided(已提供范围)   只在编译和测试的时候有效,最后打包成war包的时候不会加入。

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

    你可能在编译 classpath 中需要可用的Servlet API 来编译一个servlet,但是你不会想要在打包好的WAR 中包含这个Servlet API;

    这个Servlet API JAR 由你的应用服务器或者servlet 容器提供。

4.runtime(运行时范围)

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

    如驱动实现。jdbc。

 

maven的依赖特性:

依赖会传递,对于依赖的传递问题,主要针对的是compile作用域传递,test域不会传递

间接依赖的冲突问题:

如果层级不一样:

假设A-->包A-->包B2.0

    B-->包B1.0

C-->A B

那么会选择依赖层级少的包1.0

 

如果依赖的层级一样:

假设A-->包1.0

      B-->包2.0

C-->A B

那么C中对包的依赖会选择先在依赖声明中配置的那个。

 

参考学习视频:

http://www.icoolxue.com/album/show/45/

 

 

posted @ 2017-02-21 22:00  开拖拉机的蜡笔小新  阅读(201)  评论(0编辑  收藏  举报