maven学习之从搭建maven环境到在项目中如何使用maven

----------maven环境搭建及简单命令使用
1,maven下载地址:maven.apache.org
到达该页面找到左侧download,然后下载Binary zip archive对应的zip包。
2,配置maven环境变量。
   找到环境变量(这里设置系统变量,用户变量同理,这里略),比如我下载的maven解压在"D:\DevelopmentRoot\apache-maven-3.5.2",点击新建按钮,变量名为"m2_HOME",变量值为"D:\DevelopmentRoot\apache-maven-3.5.2",点击确定按钮。然后找到path并编辑,在末尾填写";%m2_HOME%\bin;",点击确定。打开cmd,输入"mvn -v",如果此时出来maven版本号等相关信息,则说明我们部署maven成功了。
3,maven的目录结构:
   src目录为一级目录;main及test及resources目录为二级目录;在main目录下为java目录(三级目录),同理test目录下也为java目录(三级目录);在java目录下为package目录(四级目录)。

4,按照以上maven目录结构创建相应的maven项目。

可到以下地址下载相应maven项目:http://download.csdn.net/download/qq_35255384/10162473

需要注意的是:Assert.assertEquals方法中的两个参数要相等,如果不相等则会报错,详情可百度查找该方法使用

5,找到pom.xml配置文件(该配置文件可下载struts2jar包,具体在struts2-core-2.3.24.jar包里,需要解压该jar包,然后找到该解压后的地址:struts2-core-2.3.24\META-INF\maven\org.apache.struts\struts2-core下即可看到pom.xml文件,将该文件放置到以上maven项目中,与src平级放置)
6,编写好后,打开cmd,切换到4步骤中创建的maven项目地址,比如我创建项目的地址是:D:\code\maven01,切换到该地址下,输入命令:mvn compile 进行编译(第一次执行时间较长,请耐心等待),执行完后,继续执行命令:mvn test ,这个时候会在maven项目中生成一个target的文件夹,该文件夹与src文件夹平级放置,里面包含一些测试报告及相关编译后等class文件等。继续输入命令:mvn package ,则会在target文件夹里生成一个该maven项目的jar包

------------------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项目中配置情况:

com.imooc.maven01
  
   maven01-model
   0.0.1SNAPSHOT

则相应的在打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配置如下:



    4.0.0
   com.imooc.maven02
  
   maven02-model
   0.0.1SNAPSHOT

  
        
            junit
            junit
            4.10
        

        
        
            com.imooc.maven01
            maven01-model
            0.0.1SNAPSHOT
        

  



------------------------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(超级文本),编辑器打开,找到第一个如下标签:


   
      central
      Central Repository
      https://repo.maven.apache.org/maven2
      default
     
        false
     

   

 

其中的url值:https://repo.maven.apache.org/maven2即为全球中央仓库地址。

镜像仓库,可以理解成就是一种仓库,用来存放资源的地方,与本地仓库、远程仓库作用一样,默认镜像仓库是没有被放开的,即默认处于关闭状态,

可在conf文件夹里面的settings.xml文件中找到,大概是152行,如下:


      mirrorId
      repositoryId
      Human Readable Name for this Mirror.
      http://my.repository.com/repo/path
   

其中,id标签为一,mirrorOf可自己定义(也可用通配符*号,表示匹配所有镜像仓库),name表示镜像名,可自己定义,url表示你要去下载的资源地址。

注:镜像仓库一旦开启,所有指向其他仓库的访问都会跳转到镜像仓库来,所以一般慎重使用。

比如,我这里引用国内镜像仓库:


      maven04
      central
      central in china
      http://maven.net.cn/content/groups/public
   

怎样修改默认的本地仓库地址呢?

找到conf文件夹下的settings.xml文件,将里面注释掉的localRepository标签(因为默认是关闭的,选用以上的默认地址,需要手动放开进行修改),

比如我想要将我的本地仓库放在D:\code\repository中,则可以这样标记localRepository标签:

D:/code/repository

此时可以通过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文件,找到标签,在里面添加:


      jdk-1.7
     
        true
        1.7
     

     
        1.7
        1.7
        1.7
     

   

之后在新建maven项目,就会看到jdk为1.7了,当然如果想默认是其他jdk版本,只要修改该参数即可。

------------pom.xml解析

  xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
 
  4.0.0

  反写的公司网址+项目名
  项目名+模块名
 
  当前项目版本号
  打包方式,默认为jar,还有war,zip,pom等格式

  maven1-model
 
  http://maven.apache.org
  项目描述信息
  开发者信息
  许可证信息
  组织信息
 
      
          
          
          
          
          
          
          
          
          
          
              
          

      

 

 
 
      
          
              
              <-------------->
          

      

 

 
    UTF-8
 

 
 
 
      
 

 
 
      
          
              org.apache.maven.plugins
              maven-source-plugin
              2.4
              
                  
                      package
                      
                          jar-no-fork
                      

                  

              

          

      

 


关于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如下:

  xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
  4.0.0
  com.org.web-app
  webDemo
  war
  0.0.1-SNAPSHOT
  webDemo Maven Webapp
  http://maven.apache.org
 
   
      junit
      junit
      3.8.1
      test
   

   
   
        javax.servlet
        javax.servlet-api
        4.0.0
        provided       
   
       
 

 
      
          
          
            
            org.apache.tomcat.maven
              tomcat7-maven-plugin
              2.2       
            
                
                    
                    package
                    
                        run
                    

                

            

          

      

    webDemo
 



最后点击项目右键--->run as Maven build--->输入package直到出现start字样表示成功启动服务(第一次启动下载东西较多,会慢点)。

jetty访问地址:http://localhost:8080/

tomcat访问地址:http://localhost:8080/webDemo/

需要注意的是,如果pom.xml中没有加入标签内容,则运行项目时输入:jetty:run或者tomcat:run即可运行。

---------------------mvn配置exec插件并运行java指定文件的main方法可参照以下地址:

https://segmentfault.com/a/1190000005043251

-----如何用maven将本地jar包放入本地仓库中并在项目中进行引用

https://www.cnblogs.com/lixuwu/p/5855031.html



你可能感兴趣的:(特定功能,maven,入门,基础)