maven具体是什么:
Maven是跨平台的项目管理工具, 主要服务于Java平台的项目构建、依赖管理和项目信息管理。
项目构建完整的过程:
使用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进行解压缩,例如解压到如下目录(解压目录最好不要有中文字):
3.设置系统环境变量,MAVEN_HOME
4.设置环境变量Path,将%MAVEN_HOME%\bin加入Path中,一定要注意要用分号;与其他值隔开
5.验证安装是否成功,打开cmd窗口,敲入mvn –v 查看
一般配置完上述步骤即可运行maven了,但是部分人可能会出现内存溢出的一个错误,原因已不需解释,肯定是内存不够了呗,这时我们需要设置一下maven使用的内存,
设置MAVEN_OPTS环境变量:-Xms128m -Xmx512m
注意:上面设置的具体是什么意思呢,是maven在java虚拟机中占用堆的大小,-Xms是设置堆初始的大小,-Xmx是设置堆的最大值。
针对不同用户的配置方式:
直接复制一份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
packagecn.cfs.maven;public classHello {publicString sayHello(String name){return "Hello "+name+"!";
}
}
Hello(java实现)
第4步:在/src/test/java/cn/cfs/maven目录下新建测试文件HelloTest.java
packagecn.cfs.maven;importorg.junit.Test;import static junit.framework.Assert.*;public classHelloTest {
@Testpublic voidtestHello(){
Hello hello= newHello();
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
packagecn.cfs.maven;public classHelloFriend {publicString sayHelloFriend(String name) {
Hello h=newHello();
String str=h.sayHello(name)+"引用helloFriend的方法";returnstr;
}
}
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的依赖管理去实现的,那么maven的概念模型是什么样的呢?
Maven概念模型:
可以通过上面的图片可以清晰的看出来maven是通过插件去实现每一步的操作,那么他的插件放到哪里了呢?
插件路径:C:\Users\Administrator\.m2\repository\org\apache\maven\plugins
放一张图片对比一下,我们敲的命令既是这些插件的名称,通过命令找到这些插件项目,本质上也是java些的程序。
Maven的坐标讲解:
我们的仓库一般都很大,里面有很多的jar包,maven为更快更有效的去定位实际项目中用到的jar,通过4个维度去快速锁定jar包。
groupId:定义当前Maven项目隶属项目,如果是单独的项目一般填写的是主包名
artifactId:定义实际项目中的一个模块,如果是单独项目则是项目名或主类名
version>:定义当前项目的当前版本,顾名思义不用多解释了
packaging:定义该项目的打包方式,2种,不写该坐标默认是jar,通常web项目选择war包
上面的四种坐标标签是必须的。
dependencies:配置依赖的标签,所有的依赖标签都在这里配置。
dependency:配置具体依赖的标签,只能出现在dependencies标签里。
scope:范围,具体配置项请看下面的图片: