首页 > 代码库 > Maven3学习总结-环境搭建

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项目 。
 
















Maven3学习总结-环境搭建