4,按照以上maven目录结构创建相应的maven项目。
可到以下地址下载相应maven项目:http://download.csdn.net/download/qq_35255384/10162473
需要注意的是:Assert.assertEquals方法中的两个参数要相等,如果不相等则会报错,详情可百度查找该方法使用
------------------clean,install命令使用及maven坐标、打包地址讲解
7,maven常用的构建命令:
mvn -v 查看maven版本;mvn compile 编译maven项目;mvn test对该项目进行测试,生成相应测试报告等;mvn package 打包
mvn clean 删除target文件夹(包含该文件夹下所有相关文件) mvn install 安装jar包到本地仓库中
其中 mvn clean使用较简单,这里不详细说明,mvn install的命令表示为某个maven项目打包,比如:我此时想将以上创建的maven01项目打成一个类似于junit的jar包供另一个项目maven02使用,则首先我们在使用命令行打包时切换地址到maven01项目下,假如maven01项目地址:D:\code\maven01,输入cmd后切换到D:\code\maven01地址下,然后输入mvn install命令后则会为maven01打个jar包,那么该jar包会放在哪里呢?
默认情况下,该jar包会放在本地仓库:C:\Users\Administrator\.m2\repository下,如果此时你的maven01项目的pom.xml配置的groupId为:com.imooc.maven01
artifactId为:maven01-model,version为:0.0.1SNAPSHOT。以下截取maven01项目中配置情况:
则相应的在打maven01的jar包时,会依次根据groupId、artifactId、version生成相应文件夹,所以最后可以查找到本地仓库放置maven01的jar包地址为:
C:\Users\Administrator\.m2\repository\com\imooc\maven01\maven01-model\0.0.1SNAPSHOT下,如果本地仓库找不到jar包,maven会到中央仓库中进行下载,这也是为什么我们引入junit的jar包时并没有对junit的相关类使用mvn install命令但还是能在本地仓库中找到junit的jar包的原因。其实,从专业角度来说,pom.xml中的groupId、artifactId、version三个标签就构成了一个坐标,通过这个坐标就能找到其在仓库中的具体位置,这在后面章节中会逐步说明。(maven02的项目可参照maven01来创建,其中maven02的pom.xml配置如下:
)
------------------------maven插件archetype之如何学会自动建立maven目录骨架
两种方式:
方式1:首先cmd后切换到想要建立maven工程的地址,比如我想在D:\code下建一个maven03的maven项目,并自动生成maven骨架,切换到D:\code后,输入:mvn archetype:generate后按回车键,会出现Choose a number or apply filter.............(即让你输入一个数字),这里输入:6然后按回车键,此时出现Choose org.apache.maven.archetypes:.......version:(大概意思是让你输入一个archetype插件的版本号),输入:4然后按回车键(maven此时会帮你下载该版本的archetype插件,所以稍等一会儿)。此时出现Define value for property 'groupId':(让你输入groupId编号,如果不清楚groupId则看前面内容,这里略),输入:com.maven03然后按回车,此时出现:Define value for property 'artifactId':,输入:maven03-model然后按回车键,此时出现:Define value for property 'version' 1.0-SNAPSHOT:,输入:0.0.1SNAPSHOT然后按回车键,出现:package:,输入:com.cn.maven.model,然后按回车键,此时出现Y::,输入y然后按回车键,直到看到builed success!则表示构建成功,此时会在D:\code下生成文件夹:maven03-model,里面包含pom.xml及相关maven目录结构。
方式2:cmd切换到D:\code下,依次输入:mvn archetype:generate -DgroupId=com.maven04 -DartifactId=maven04-demo -Dversion=0.0.1SNAPSHOT -Dpackage=com.maven04 然后按回车键,之后出现Choose a number or apply filter.............(即让你输入一个数字),这里输入:6然后按回车键,此时出现Choose org.apache.maven.archetypes:.......version:(大概意思是让你输入一个archetype插件的版本号),输入:4然后按回车键(maven此时会帮你下载该版本的archetype插件,所以稍等一会儿)。知道看到Build Success字样表明你已创建成功。
----------------------maven坐标命名规范
一般groupId标签用:网址简写+项目名来进行命名。比如:com.imooc.maven04;artifactId标签用:项目名+模块名来进行命名,比如:maven04-model;version标签表示版本号。
----------maven本地仓库及远程仓库、镜像仓库地址及如何修改默认的本地仓库地址
maven本地仓库的默认地址:C:\Users\Administrator\.m2\repository
全球远程仓库地址查找方式:在下载的maven文件夹里,在lib中找到jar包名为:maven-model-builder-3.5.2.jar(根据自己版本而定具体名字),将其解压,找到org\apache\maven\model下,有个pom-4.0.0.xml(超级文本),编辑器打开,找到第一个如下标签:
其中的url值:https://repo.maven.apache.org/maven2即为全球中央仓库地址。
镜像仓库,可以理解成就是一种仓库,用来存放资源的地方,与本地仓库、远程仓库作用一样,默认镜像仓库是没有被放开的,即默认处于关闭状态,
可在conf文件夹里面的settings.xml文件中找到,大概是152行,如下:
其中,id标签为一,mirrorOf可自己定义(也可用通配符*号,表示匹配所有镜像仓库),name表示镜像名,可自己定义,url表示你要去下载的资源地址。
注:镜像仓库一旦开启,所有指向其他仓库的访问都会跳转到镜像仓库来,所以一般慎重使用。
比如,我这里引用国内镜像仓库:
怎样修改默认的本地仓库地址呢?
找到conf文件夹下的settings.xml文件,将里面注释掉的localRepository标签(因为默认是关闭的,选用以上的默认地址,需要手动放开进行修改),
比如我想要将我的本地仓库放在D:\code\repository中,则可以这样标记localRepository标签:
此时可以通过mvn compile或其他命令来进行验证,执行命令会在D:/code/repository中下载一些资源。
--------------------------eclipse中安装maven插件及使用maven进行打包
首先下载好maven插件,解压后将该文件直接copy到eclipse的dropins文件夹中,然后重启eclipse即可(这种方法简单粗暴且屡试不爽)。
需要配置eclipse指向下载好的maven插件,按以下步骤进行搜索填写:
打开eclipse--->windows----->preferences---->Maven------->Installations(右侧点击Add按钮,Installation home右侧点击Directory按钮,指向下载的maven插件文件地址,点击确定即可)---->User settings(右侧Global settings表示全局设置,User settings表示当前用户下设置,点击右侧browser按钮,指向下载的maven插件下的conf文件里的settings地址)--->点击确定即可。
安装完毕后,新建maven工程,默认会选择........quickstart版本的archetype自动创建maven骨架的插件,点击下一步,此时会让你输入:groupId,artifactId,最后点击finish即可。要运行maven项目进行打包等操作时,找到pom.xml配置文件,右键Run as找到maven build,会让你选择哪一种命令来操作,在右侧Goals文本框中输入:package,点击Run,直到控制台输入Build Success字样表示打包成功,此时,在工作空间中即可找到该jar包。
-----------maven声明周期了解
完整的项目构建过程:清理、编译、测试、打包、集成测试、验证、部署。
maven声明周期:clean清理项目;default构建项目;site生成站点。
clean清理项目分为:pre-clean执行清理前的工作;clean清理上一次构建生成的所有文件;post-clean执行清理后的文件。
default构建项目(核心):compile,test,package,install
site生成项目站点:pre-site在生成项目站点前要完成的工作;site生成项目站点文档;post-site生成站点后要完成的工作;site-deploy发布生成的站点到服务器上。
------------怎样修改maven默认的jdk版本?
maven默认的jdk版本是jdk1.5,这就会导致我们打包后在JRE System Library中看到jdk为1.5的版本,实际上我们项目中用到的可能是1.7或者1.8或者其他,那么怎么修改呢?
找到maven文件中conf文件下的settings.xml文件,找到
之后在新建maven项目,就会看到jdk为1.7了,当然如果想默认是其他jdk版本,只要修改该参数即可。
------------pom.xml解析
<-------------->
关于maven的依赖传递可参照我的另一篇文章:http://blog.csdn.net/qq_35255384/article/details/78857619
maven的依赖冲突遵循两个原则:短路优先及就近原则。
短路优先:比如B依赖A,C依赖B,按照依赖传递性,则有C-->B-->A的关系,
如果此时A引入spring的jar包为1.2版本,B引入spring的jar包为1.5版本,则C最终引入spring的jar包为1.5版本
就近原则:比如C依赖A,同时C依赖B,但C的pom.xml配置中先写的是A的坐标,A引入了jdbc的jar包版本为2.3,B引入了jdbc的jar包版本为2.8,则C最终引入的是2.3版本。关于maven的聚合和集成可参照我的另一篇文章:http://blog.csdn.net/qq_35255384/article/details/78858211
------------------------------------如何用maven创建web项目以及如何使用服务器插件运行web项目
首先新建maven项目,选择artifact Id为web-app结尾(表示新建的是web项目)的archetype版本,GroupId填写:com.org.web-app;Artifact Id填写:webDemo,点击finish。
新建完web项目后jsp会报错,这是因为缺少servlet-api.jar包,进入maven中央仓库:http://mvnrepository.com/ ,搜索servlet-api.jar,然后将该jar包坐标填写到pom.xml中需要注意的是:该jar包的依赖范围为:provided(表示只在打包测试时用到,正式发布不用,因为容器自带,引入可能导致冲突)。在Java Resource下补全maven项目结构:依次新建文件夹:src/main/java及src/test/java两个文件夹。然后右键项目-->build path-->在source中查看文件的输出位置=是否指向target/classes,如果不是则需要进行修改。点击Project Facets查看Dynamic Web Module是否勾选(没勾选需要选中,表示此项目为Web动态项目)。最后点击OK。
怎样用jetty/tomcat插件来运行该项目呢?
首先在maven中央仓库中搜索:jetty-maven,找到jetty插件的坐标,填写到pom.xml中(tomcat同理),完整的pom.xml如下:
最后点击项目右键--->run as Maven build--->输入package直到出现start字样表示成功启动服务(第一次启动下载东西较多,会慢点)。
jetty访问地址:http://localhost:8080/
tomcat访问地址:http://localhost:8080/webDemo/
需要注意的是,如果pom.xml中没有加入
---------------------mvn配置exec插件并运行java指定文件的main方法可参照以下地址:
https://segmentfault.com/a/1190000005043251
-----如何用maven将本地jar包放入本地仓库中并在项目中进行引用
https://www.cnblogs.com/lixuwu/p/5855031.html