Maven

maven具体是什么:

Maven是跨平台的项目管理工具, 主要服务于Java平台的项目构建、依赖管理和项目信息管理。

项目构建完整的过程:

Maven_第1张图片 

使用maven后只需要一步即可完成上述构建过程。

好处2,依赖管理:

正常的项目我们处理jar包很少会去关心具体的版本号,有时当前用到了某个功能去找jar包一般都是用最新的,这样当前可能没问题,实际上这给我们的项目带来了极大的安全隐患和风险,而使用maven后,这些jar包之间的依赖关系就能够清晰的看到了,为什么要用这些jar包,它能自动管理各个jar包之间版本的依赖关系。

好处3,构件化编程:

每个项目的代码的重用率高,将原来的大工程分成很多个小工程,通过maven去构件组装,用到什么功能随时插拔使用,提高开发成本。

在maven的角度来看,简单的来讲每个jar包就相当于一个构件化的组件。

maven安装过程:

1.检查jdk安装的情况(要1.6以上版本):

Echo %JAVA_HOME%   注:验证是否设置java环境变量

Java -version     注:验证java版本

2.对apache-maven-3.0.3-bin.zip进行解压缩,例如解压到如下目录(解压目录最好不要有中文字):

 Maven_第2张图片

3.设置系统环境变量,MAVEN_HOME

 Maven_第3张图片

4.设置环境变量Path,将%MAVEN_HOME%\bin加入Path中,一定要注意要用分号;与其他值隔开

 Maven_第4张图片

5.验证安装是否成功,打开cmd窗口,敲入mvn  –v 查看

 Maven_第5张图片

 一般配置完上述步骤即可运行maven了,但是部分人可能会出现内存溢出的一个错误,原因已不需解释,肯定是内存不够了呗,这时我们需要设置一下maven使用的内存,

设置MAVEN_OPTS环境变量:-Xms128m -Xmx512m

注意:上面设置的具体是什么意思呢,是maven在java虚拟机中占用堆的大小,-Xms是设置堆初始的大小,-Xmx是设置堆的最大值。

有兴趣的朋友可以参考这个网址去学习一下:http://unixboy.iteye.com/blog/174173/

 针对不同用户的配置方式:

直接复制一份E:\apache-maven-3.2.5\conf\settings.xml这个文件到对应的用户(例如:administrator,对应目录是:C:\Users\Administrator\.m2)下即可,这样就表示这个用户的maven配置信息就走这个文件了。

注意:E:\apache-maven-3.2.5\conf\settings.xml默认是全局用户的配置信息。

Maven的约定:

我们在使用maven的时候一定要遵循maven的这个约定,因为凭什么说这个项目是maven项目呢就是因为有一个这样的约定,所以只要按照这个约定做的项目,那它就是个maven项目,正如web项目一样,是约定俗成的东西。

src/main/java 存放项目的.java文件
src/main/resources 存放项目资源文件,如spring,hibernate配置文件
src/test/java 存放所有测试.java文件,如JUnit测试类
src/test/resources 测试资源文件
target 项目输出位置
pom.xml 必须的maven特色文件

 

 

 

 

 

 

动手实践第一个maven项目:

第1步. 首先建立Hello项目同时建立Maven约定的目录结构

Hello
--src
-----main
----------java
----------resources
-----test
---------java
---------resources
--pom.xml

第2步:在项目Hello根目录建立pom.xml


  4.0.0
  cn.cfs.maven
  Hello
  0.0.1-SNAPSHOT
  Hello
  
    
        
            junit
            junit
            4.9
            test
                
        
    
pom.xml

第3步:在src/main/java/cn/cfs/maven目录下新建文件Hello.java

package cn.cfs.maven;

public class Hello {
    
    public String sayHello(String name){
    
        return "Hello "+name+"!";
    
    }
    
}
Hello(java实现)

第4步:在/src/test/java/cn/cfs/maven目录下新建测试文件HelloTest.java

package cn.cfs.maven;

import org.junit.Test;
import static junit.framework.Assert.*;

public class HelloTest {

    @Test
    public void testHello(){
        
        Hello hello = new Hello();
        String results = hello.sayHello("litingwei");
        assertEquals("Hello litingwei!",results);        

    }
    
}
HelloTest

第5步:

a)打开cmd命令行,进入Hello项目根目录执行 mvn compile命令,查看根目录变化
b)cmd 中继续录入mvn clean命令,然后再次查看根目录变化
c)cmd 中录入 mvn clean compile命令, 查看根目录变化
d)cmd 中录入 mvn clean test命令,查看根目录变化
e)cmd 中录入 mvn clean package命令,查看根目录变化
f )cmd 中录入 mvn install命令,查看根目录变化

 动手实践第二个maven项目:

第1步:复制一份hello项目更名为hellofriend,要求约定的结构和hello一样,里面的类文件可以删除

第2步:在src/main/java/cn/cfs/maven目录下新建文件HelloFriend.java

package cn.cfs.maven;

public class HelloFriend {
    public String sayHelloFriend(String name) {
        Hello h=new Hello();
        String str=h.sayHello(name)+"引用helloFriend的方法";
        return str;
    }
}
HelloFriend

第3步:在项目Hello根目录建立pom.xml


  4.0.0
  cfs.maven
  HelloFriend
  0.0.1-SNAPSHOT
  HelloFriend
  
    
        
            junit
            junit
            4.9
            test
                
        
        
            cfs.maven
            Hello
            0.0.1-SNAPSHOT
            compile
                
    
注意观察这个pom.xml文件和第一个的不同

第4步:观察一下你的maven仓库是否生成了对应的jar文件

Maven_第6张图片

可以看到项目与项目之间的引用主要是通过maven的依赖管理去实现的,那么maven的概念模型是什么样的呢?

Maven概念模型:

Maven_第7张图片

可以通过上面的图片可以清晰的看出来maven是通过插件去实现每一步的操作,那么他的插件放到哪里了呢?

插件路径:C:\Users\Administrator\.m2\repository\org\apache\maven\plugins

Maven_第8张图片

放一张图片对比一下,我们敲的命令既是这些插件的名称,通过命令找到这些插件项目,本质上也是java些的程序。

 Maven的坐标讲解:

我们的仓库一般都很大,里面有很多的jar包,maven为更快更有效的去定位实际项目中用到的jar,通过4个维度去快速锁定jar包。

groupId:定义当前Maven项目隶属项目,如果是单独的项目一般填写的是主包名
artifactId:定义实际项目中的一个模块,如果是单独项目则是项目名或主类名
version>:定义当前项目的当前版本,顾名思义不用多解释了
packaging:定义该项目的打包方式,2种,不写该坐标默认是jar,通常web项目选择war包

上面的四种坐标标签是必须的。

dependencies:配置依赖的标签,所有的依赖标签都在这里配置。

dependency:配置具体依赖的标签,只能出现在dependencies标签里。

scope:范围,具体配置项请看下面的图片:

Maven_第9张图片

 

转载于:https://www.cnblogs.com/mycifeng/p/7217940.html

你可能感兴趣的:(java)