Maven实战

一、Pom.xml

1.坐标

  maven 的所有构件均通过坐标进行组织和管理。maven 的坐标通过 5 个元素进行定义,其中 groupId、artifactId、version 是必须的,packaging 是可选的(默认为jar),classifier 是不能直接定义的。

groupId:定义当前 Maven 项目所属的实际项目,跟 Java 包名类似,通常与域名反向一一对应。
artifactId:定义当前 Maven 项目的一个模块,默认情况下,Maven 生成的构件,其文件名会以 artifactId 开头。
version:定义项目版本。节点包含-SNAPSHOT为snapshot版本(不稳定版本或者是在开发中版本)。
packaging:定义项目打包方式,如 jar,war,pom,zip ……,默认为 jar。
classifier:定义项目的附属构件,其中 sources 和 javadoc 就是这两个附属构件的 classifier。classifier 不能直接定义,通常由附加的插件帮助生成。

2 . 依赖


    
        org.springframework
        spring-test
        3.2.0.RELEASE
        jar
        test
        ${java.home}/lib/rt.jar
        false
        
            
        
    

    type:依赖类型,对应构件中定义的 packaging,可不声明,默认为 jar;
    scope:依赖范围;
    optional:依赖是否可选;
    exclusions:排除传递依赖。

依赖范围:

Maven 对应的有三套 classpath:编译classpath、测试classpath,运行classpath。scope 选项的值,决定了该依赖构件会被引入到哪一个 classpath 中。

compile:编译依赖范围,默认值。此选项对编译、测试、运行三种 classpath 都有效,如 hibernate-core-3.6.5.Final.jar,表明在编译、测试、运行的时候都需要该依赖;
test:测试依赖范围。只对测试有效,表明只在测试的时候需要,在编译和运行时将无法使用该类依赖,如 junit;
provided:已提供依赖范围。编译和测试有效,运行无效。如 servlet-api ,在项目运行时,tomcat 等容器已经提供,无需 Maven 重复引入;
runtime:运行时依赖范围。测试和运行有效,编译无效。如 jdbc 驱动实现,编译时只需接口,测试或运行时才需要具体的 jdbc 驱动实现;
system:系统依赖范围。和 provided 依赖范围一致,需要通过 显示指定,且可以引用环境变量;
import:导入依赖范围。使用该选项,通常需要 pom,将目标 pom 的 dependencyManagement 配置导入合并到当前 pom 的  dependencyManagement 元素。

3.maven打包生成doc

 

            
                org.apache.maven.plugins
                maven-compiler-plugin
                3.5.1
                
                    ${java.version}
                    ${java.version}
                    ${java.version}
                    ${java.version}
                
            

            
            
                org.apache.maven.plugins
                maven-javadoc-plugin
                2.9.1
                
                    UTF-8
                    true
                    UTF-8
                    UTF-8
                
                
                    
                        attach-javadocs
                        
                            jar
                        
                    
                
            

            
            
                org.apache.maven.plugins
                maven-source-plugin
                3.0.1
                
                    
                        attach-sources
                        
                            jar
                        
                    
                
            

二、setting.xml

  


  


	
	

	  
	     
		
		
		
			XXX
			Nexus Mirror
			http://XXX:8081/nexus/content/groups/public
			${XXX}
		

		
		
			alimaven
			aliyun maven
			http://maven.aliyun.com/nexus/content/repositories/central/
			central			
		
		
		
			repo1
			central
			Human Readable Name for this Mirror.
			http://repo1.maven.org/maven2/
		
		
		
			repo2
			central
			Human Readable Name for this Mirror.
			http://repo2.maven.org/maven2/
		
	  

	   
	  
		  
			development  
			  
			  
				  
					central  
					  
					http://central  
					  
					
						true
					  
					  
					
						true
					  
				  
			  

			    
			  
				  
					central  
					http://central  
					
						true
					  
					
						true
					  
				  
			  
		  

		  
			  
			public-snapshots  
			  
				  
					public-snapshots  
					  
					http://public-snapshots  
					
						false
					  
					
						true
					  
				  
			  
			  
				  
					public-snapshots  
					http://public-snapshots  
					
						false
					  
					
						true
					  
				  
			  
		  
	  

	    
	  
		  
		development  
	  


	  
	  
		  
			  
			nexus  
			admin  
			admin123  
		  
		  
			user-release
			admin  
			admin123  
		  
		  
			user-snapshot
			admin  
			admin123  
		  
	  
  

 

三、发布项目到私服

Nexus 的仓库分为这么几类:

hosted 宿主仓库:主要用于部署无法从公共仓库获取的构件(如 oracle 的 JDBC 驱动)以及自己或第三方的项目构件;
proxy 代理仓库:代理公共的远程仓库;
virtual 虚拟仓库:用于适配 Maven 1;
group 仓库组:Nexus 通过仓库组的概念统一管理多个仓库,这样我们在项目中直接请求仓库组即可请求到仓库组管理的多个仓库。

私服默认密码:admin admin123

1.私服配置成可发布

Release版本的项目应该发布到Releases仓库中,对应的,Snapshot版本应该发布到Snapshots仓库中。Maven根据pom.xml文件中版本号节点的属性是否包含-SNAPSHOT,来判断该项目是否是snapshot版本。如果是snapshot版本,在执行mvn deploy部署命令时,maven会自动将项目发布到Snapshots仓库。要发布项目,首先需要将Releases仓库和Snapshots仓库的“Deployment Policy”设置为“Allow Redeploy”:

2.setting.xml配置

                  
			user-release
			admin  
			admin123  
		  
		  
			user-snapshot
			admin  
			admin123  
		  

3.pom.xml配置


        
            user-snapshot
            User Porject Snapshot
            http://XXX/nexus/content/repositories/snapshots/
            true
        
        
            user-release
            User Porject Release
            http://XXX/nexus/content/repositories/releases/
        
    

 

你可能感兴趣的:(配置文件,项目管理)