Maven3学习总结-环境搭建

        我们在进行java项目开发时,尤其是SSH等框架整合的项目时,最头痛的就是jar包的冲突等问题,怎样解决该问题并进行良好的项目构建呢?apache的Maven能够帮我们解决以上的问题。

   
        Maven 是一个项目管理和构建自己主动化工具。可是对于我们程序猿来说。我们最关心的是它的项目构建功能。


         首先:从Maven官网(http://maven.apache.org/download.cgi  ;)下载maven。并解压缩。

         其次:配置maven的环境变量:M2_HOME,右键我的电脑-》环境变量-》用户变量-》创建->M2_HOME,value:就是你的maven的bin所在文件夹。并把该变量加入到path中。

        

          最后:測试mavne是否安装成功。在CMD命令中键入  mvn -v 命令:假设出现例如以下所看到的。就表示安装成功mavne

          

           Maven 使用惯例优于配置的原则 。它要求在没有定制之前,全部的项目必须遵循例如以下的结构:
        app
           --pom.xml
           --src 
               --main
                  --java
                    --package... 
                         --class
               --test 
                 --java
                  --package..
                     --class
   pom.xml文件时项目构建文件(Project Object Model):其内容例如以下:

<?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/maven-v4_0_0.xsd"> <modelVersion>4.0.0</modelVersion> <groupId>org.oracle.maven</groupId> <artifactId>maven-hello</artifactId> <version>0.0.1-SNAPSHOT</version> <dependencies> <dependency> <groupId>junit</groupId> <artifactId>junit</artifactId> <version>4.10</version> </dependency> </dependencies> </project>


          以上文件文件里 modelVersion是模块版本号,对于Maven2以后版本号此处都是4.0.0, <groupId>:表示项目属于哪一个组。此处一般都是相应公司。<artifactId>是模块(子项目)的唯一名称,<version>表示当前的版本号(SNAPSHOT:表示快照版本号。測试)<name>用于说明项目。

依据以上结构创建好项目结构:

                             

          以上的main中存放项目(模块) 的主代码,test中用与保存測试代码,在main中的winstar包下创建一个java类:代码例如以下:

          <code>

            package org.winstar;
            public class HelloMaven{
             public String sayHello(){
                         return "Hello Maven";
              }
           }

         </code>

         回到CMD命令中,运行mvn compile(编译命令)  会看到例如以下:

         

         

           BUILD SUCCESS:构建成功,同一时候在项目中出现了一个target目录在target下有classes和maven-status两个目录,我们的HelloMaven.class文件mavne已经帮我们自己主动编译完毕并保存在classes目录中。 

           在test->java->org->winstar包下创建例如以下測试类,代码例如以下:

          <code>

            package org.oracle.domain;
            import org.junit.*;
            import static org.junit.Assert.*;
            public class HelloTest{
           @Test
                   public void test(){
           Hello hello=new Hello();
           String str=hello.sayHi();
           assertEquals(str,"hello");
}
}

         </code>

         保存pom.xml文件后。运行mvn test, maven会自己主动从网上(中央仓库。这个后头会讲)下载所需的jar。并保存的本地的(仓库:默认在C:\Users\Administrator\.m2\repository文件夹下)硬盘上。我们能够查看该文件夹,发现多了个junit的文件夹,当中已经包括了jar文件。

        运行安装,将项目生成jar,在CMD中运行 mvn clean install 命令(clean用于清空target文件夹),会看到例如以下:

        

          mavne会把项目生成hello-mavne-0.0.1-SNAPSHOT.jar文件,当中 hello-maven是<artifactiId>的名称。同一时候,这个jar文件会保存到本地仓库中。

我们把这个jar文件 仅仅需通过项目的pom.xml文件导入就可以。

          我们完毕第一maven项目后。基本了解了maven的项目结构和两个基本命令:mvn compile(编译) mvn test(測试),并且maven的项目须要网络的支持(须要从中央仓库中下载jar文件)。那么maven究竟能给我们带来什么优点(怎样实现项目、模块的自己主动构建以及管理呢)?接下来我们来做第二个实验,參考第一个maven项目结构,建立一个新的目录(项目,其层次结构与第一个同样)。

                

  在model中创建一个java类:

 <code>

           package org.winstar.model;

           public class World{
        public String show(){
        HelloMaven hm=new HelloMaven();
                return hm.sayHello();
}
}

</code>

        首先我们的通知maven要导入的模块名称。mvn通过GAV(GroupId,ArtifactId,Version),简称“坐标” 来定位项目,并建立项目的依赖关系(依赖关系是maven中的一个重点,这个后面会讲到)。在新创建的项目的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/maven-v4_0_0.xsd"> <modelVersion>4.0.0</modelVersion> <groupId>org.winstar.maven.ch002</groupId> <artifactId>maven_002</artifactId> <version>0.0.1-SNAPSHOT</version> <dependencies> <dependency> <groupId>org.winstar.maven.ch001</groupId> <artifactId>hello_maven</artifactId> <version>0.0.1-SNAPSHOT</version> </dependency> </dependencies> </project>

         编辑并保存该文件,回到cmd中运行例如以下命令:

        

            至此,我们的项目成功执行(并导入第一个项目模块),有点感觉啦吧。。!


通过以上的两个实验。我们发现mavne的项目架构。那么我们每次都须要这么麻烦的去手动的创建文件文件夹吗(Eclipse的mavne支持和sts的mavne支持。后面会讲),不须要的。我们仅仅要运行 mvn archetype: generate。 maven会自己主动依据骨架来完毕项目的创建。
首先我们创建一个目录,然后进入该目录,并运行mvn archetype:generate

           等待。

。。

提示输入groupId.artifactId: version package 最后键入y完毕项目的构建,看我们的目录吧!自己主动完毕。太给力啦。
我们会看到mavne会自己主动联网下载所需的jar文件资源(同一时候自己主动保存到本地仓库中,下次就不需从网上去下载了。

本地仓库能够在maven的文件夹中有个conn的文件夹,该文件夹下有一个settings.xml文件改动成自己的文件夹就可以)。

          mvn archetype:generate命令会自己主动创建maven项目架构(包含pom.xml和各个目录)这个命令就是在Eclipse中创建mavne项目时用到的。好了简单总结一下mvn的基本命令:
1:mvn compile--->编译
2:mvn test--->測试(会自己主动生成測试报告)
3: mvn clean package--->将项目打包(clean:清空target文件夹)
4:mvn clean install--->安装(会依据artifactiId和version生成一个jar,并保存到本地的仓库中) 
5:mvn archetype: generate---->(依据archetype:骨架)自己主动创建mavne项目 。

 
















posted on 2017-06-23 21:51  ljbguanli  阅读(278)  评论(0编辑  收藏  举报