maven打包部署到私服

心得

apache的开源maven插件对我们使用maven进行打包,发布的流程简化了不少。开源插件帮我们减少了了解详细流程的工作量,那么同时肯定会带来熟悉各个插件默认配置的麻烦,以下是最近使用maven插件的一些心得。
  • 我们在创建工程是的命名最好遵从maven工程的习惯,尤其是artifactId。虽然你后面可以修改配置文件来修改打包后的jar或war包名,但是使用maven-delpoy-plugin插件时,默认上传的就是artifactId开头的,目前我还没有找到好的解决办法。
  • 网上有介绍使用maven-war-plugin的overlay属性来合并多个web工程,但是overlay只是合并资源文件,并不能合并web.xml,参考http://java.dzone.com/articles/mavens-war-overlay-what-are。我后来找到了cargo-maven2-plugin插件,其介绍在http://cargo.codehaus.org/Merging+WAR+files。
  • 一般常用的插件有:发布jar到私有库,会用到maven-deploy插件;同时发布源码会用到maven-source-plugin插件;合并多个web工程会用到cargo-maven-plugin插件。

maven-deploy-plugin插件

1、首先在nexus私有库中创建一个可以上传jar包的用户。我先创建了一个角色,再创建一个上传的用户,这样其他项目组的成员可以重用这个角色的配置。
maven打包部署到私服_第1张图片
创建用户
maven打包部署到私服_第2张图片
2、在个人maven配置文件中添加该用户的信息
maven打包部署到私服_第3张图片
setting.xml
maven打包部署到私服_第4张图片

3、在maven工程的pom.xml配置部署的仓库, 注意pom.xml和setting.xml中的id属性要一致
	
		
			packaging-releases
			Packaging Release Repository
			http://127.0.0.1:8081/nexus/content/repositories/packaging-release/
		
		
			packaging-snapshots
			Packaging Snapshot Repository
			http://127.0.0.1:8081/nexus/content/repositories/packaging-snapshot/
		
	
这样就可以将自己的jar包部署到私有库中了,将maven工程的SNAPSHO后缀删除后自动发布到Release属性的仓库,之前默认的是Snapshot属性的仓库。
maven打包部署到私服_第5张图片

maven-source-plugin插件

要想在部署jar包到私有库的同时上传源码包,修改一下maven工程的pom.xml文件就可以,添加以下内容
	
		${project.artifactId}
		
			
				maven-source-plugin
				2.2.1
				
					  
                        attach-sources  
                        verify  
                          
                            jar-no-fork  
                          
                    
				
			
		
	
再部署时,就会自动上传源码包了
maven打包部署到私服_第6张图片

cargo-maven2-plugin插件

当我们需要和并多个war包时,使用cargo-maven2-plugin可以自动帮我们合并web.xml
1、添加cargo-maven2-plugin插件,其中descriptor指向配置文件
		
			
				org.codehaus.cargo
				cargo-maven2-plugin
				1.1.3
				true
				
					src/assemble/merge.xml
				
			
		
2、配置文件src/assemble/merge.xml配置如下


	
		com.hust.wnlo.dsis.ipackaging:user.web
		com.hust.wnlo.dsis.ipackaging:commodity.web
	
	
		
			
				
					
				
				
					
						
							$left:param-name
							$left:param-value $right:param-value
						
					
				
			
		
	
3、使用cargo:uberwar合并这2个war包
maven打包部署到私服_第7张图片

输出日志如下
[INFO] Scanning for projects...
[INFO] 
[INFO] Using the builder org.apache.maven.lifecycle.internal.builder.singlethreaded.SingleThreadedBuilder with a thread count of 1
[INFO]                                                                         
[INFO] ------------------------------------------------------------------------
[INFO] Building all Maven Webapp 0.0.1-SNAPSHOT
[INFO] ------------------------------------------------------------------------
[INFO] 
[INFO] --- cargo-maven2-plugin:1.1.3:uberwar (default-cli) @ all ---
[INFO] Building war: D:\TestWork\workspace\com.hust.wnlo.dsis.ipackaging.all-0.0.1-SNAPSHOT\target\all.war
[INFO] ------------------------------------------------------------------------
[INFO] BUILD SUCCESS
[INFO] ------------------------------------------------------------------------
[INFO] Total time: 6.426 s
[INFO] Finished at: 2015-02-02T14:42:54+08:00
[INFO] Final Memory: 8M/166M
[INFO] ------------------------------------------------------------------------

参考网址

  • 发布一个工程的流程:http://juvenshun.iteye.com/blog/376422。
  • merge.xml配置来源:https://github.com/opennms-forge/poc-nms-core/blob/master/core/web/src/assemble/merge.xml。



你可能感兴趣的:(eclipse)