Maven学习笔记

1、可选依赖:

    可选依赖不会进行传递,例如:A—>B、B—>X(可选)、B—>Y(可选),那么对于A来说,X、Y都是A的可选依赖,依赖将不会得到传递,换句话来说,X、Y对A不会又任何影响,A不会像传递性依赖一样引入X、Y,传递性依赖的表示


  com.ck
  common-data
  ${common-data.version}
  true

2、排除依赖:如果A依赖B,B又依赖C,那么根据传递性依赖,那么A会引入C如果想要排除C


   org.thymeleaf
   thymeleaf-spring4
   ${thymeleaf.version}
   
      
        thymeleaf
        org.thymeleaf
      
   

3、归类依赖:设置统一版本号:

 
        2.9.5
 

    
       com.fasterxml.jackson.core
       jackson-annotations
       ${jackson-version}
     

4、优化依赖:

 查看当前项目已经解析依赖:mvn dependency:list

 查看当前项目依赖树:mvn dependency:true

 依赖分析:mvn dependency:analyze

Used undeclared dependencies found:这个是指项目中使用到的但是没有显示声明的依赖,然而是通过直接依赖传递过来的,也就是传递性依赖,当升级直接依赖的时候,相关传递性依赖的版本也可能发生变化,这种变化可能导致项目出错,因此,显示声明项目中直接用到的依赖

 Unused declared dependencies found:这个是项目中未使用的,但显示声明的依赖,这类依赖需要小心分析,因为依赖分析只能分析编译主代码和测试代码需要用到的依赖,一些执行测试和运行时需要的依赖它发现不了,对于分析后实在无用的依赖,确实可以直接删除;

5、maven仓库:

 分为本地仓库和远程仓库,远程仓库又分为私服和中央仓库、其它公共仓库;

 本地仓库:本地仓库地址的配置文件在settings.xml文件里面

D:\Users\xxx\.m2\repository\

一般项目构建时先从本地仓库查看依赖构件,如果查不到则从远程仓库搜索构建,如果远程仓库也查不到构建则会报错,如果本地项目有A、B,A项目依赖B项目,那么可以先使用将B项目打包(打包命令 mvn clean install)放到本地仓库,然后A项目就可以依赖使用B项目;

6、配置认证信息:settings.xml


		
			releases
			xxx
			xxxx
		
		
			snapshots
			xxxx
			xxxxx
		
 

最关键的是id,这个id和远程仓库的id必须一致;

7、部署至远程仓库:

pom.xml文件配置:
 


        
            xx
            xxx
            http://localhost:8080
        

id是该远程仓库的唯一标识,name是用户任取的,url表示该仓库的地址往远程仓库部署的时候一般需要认证,前面已经说过了,执行命令:mvn clean deploy,将构建部署到远程仓库;

8、镜像:镜像可以看成是仓库的代理,所有能从仓库获取的构件都可以从镜像获取到,而且速度更快;

setting.xml配置文件:


  
     xxxx
	 center
     public
     http://xxx
  

的值为center,代表该镜像配置为中央仓库的镜像,任何对于中央仓库的请求都会转至该镜像,如果要代理所有仓库,那么就将值配置为*,另外三个元素id、name、url与一般仓库无异,类似的如果该镜像需要认证,也可以基于该id配置仓库认证。

9、maven插件:

查看插件信息命令:mvn help:describe -Dplugin=org.apache.maven.plugins:maven-compiler-plugin

查看项目依赖list:mvn dependency:list

查看项目依赖树:mvn:dependency:tree

插件的远程仓库配置:


	
		xxxx
		http://xxxx
		
			true
			warn
			
			
			true
			always
			fail
			
	

我们在配置插件的时候,经常看见插件没有配置groupId,如下所示:

 
     maven-eclipse-plugin
     2.9
 

这是因为maven在解析插件的时候,如果没有发现groupId,会自动用默认的groupId, org.apache.maven.plugins补齐,当没有配置版本号的时候,核心插件会在超级pom种设定版本,例如maven-clean-plugin。 对于非核心pom,maven2的策略是使用latest版本,这个版本可能是快照版本,不是很稳定,maven3的策略是使用release版本,这样可以避免由于快照频繁更新而导致的插件行为不稳定;

10、Maven版本号的定义:

格式:<主版本>.<次版本>.<增量版本>-<里程碑版本>

例如:1.3.4-beta-2 解释:1表示第一次重大版本,3表示大版本下的第三个次要版本,4表示此版本的第四次增量,最后的beta-2表示此版本的一个里程碑,一般的主版本、次版本是必须要的;

 

 

你可能感兴趣的:(maven)