Maven 项目打成可执行Jar 包或者War包

随着 Maven 使用的越来越多,我们希望Maven 将java项目打包。下面介绍几种方式:

第一种,在pom.xml 中添加打包插件。


      org.apache.maven.plugins
      maven-shade-plugin
      3.0.0
           
              
                  package
                  
                      shade
                   
                   
                       
                        
                               com.xattit.provider.RunMain
                        
                           
                           
                               META-INF/spring.handlers
                           
                           
                               META-INF/spring.schemas
                           
                       
                        
                            
                                *:*
                                
                                     META-INF/*.SF
                                     META-INF/*.DSA
                                     META-INF/*.RSA
                                
                            
                       
                    
              
    

注:打包插件其实就是个jar 包。具体版本可以到Maven repository 查找。两位为了生成可执行文件,需要证明程序运行的入口--mainClass。

我是在项目工作空间下运行mvn package 命令【清空命令 mvn clean】,截图:

Maven 项目打成可执行Jar 包或者War包_第1张图片

运行结果截图如下:

Maven 项目打成可执行Jar 包或者War包_第2张图片

在项目工作空间target 目录下生成有两个jar包。其中xxx-SNAPSHOT.jar 就是包含项目依赖包的可执行文件。另外一个不是。

在DOS下运行 java -jar xxx.jar,即可执行。

以下两种生成jar 包的方式与第一种相同。

方式2:在pom.xml 中添加打包插件

  
            org.apache.maven.plugins  
            maven-assembly-plugin  
            2.6  
              
                  
                      
                        com.ttit.provider.Main  
                      
                  
                  
                    jar-with-dependencies  
                  
            
               
                  
                    make-assembly  
                    package  
                      
                        single  
                      
                  
                
        

就先介绍着两种生成jar 包的方式。这两种方式参照微博:转载原文

======================================================================

对于java web 项目可以生成可执行过war包,即在DOS下运行java -jar xx.war 即可执行web项目。

【这里有个前提,项目中嵌入jetty自启动类,也就是写好程序jetty的启动入口。用jetty做容器加载web项目】

原理与上述相似,在pom.xml 中添加生成war 的插件:


		TestWeb
		
			
				maven-compiler-plugin
				2.3.2
				
					1.6
					1.6
				
			
			
				maven-war-plugin
				2.2
				
					3.0
					false
				
			
			
			
				org.apache.maven.plugins
				maven-antrun-plugin
				1.7
				
					
						main-class-placement
						prepare-package
						
							
								
									
										
									
								
							
						
						
							run
						
					
				
			

			
				org.apache.maven.plugins
				maven-shade-plugin
				2.1
				
					
						package
						
							shade
						
						
							false
							
								
									com.phda.test.Main2
								
							
							
								
									org.eclipse.jetty:*
									*:javax.servlet*
									org.glassfish:javax.el*
								
							
							
								
									*:*
									
										META-INF/*.SF
										META-INF/*.DSA
										META-INF/*.RSA
									
								
							
						
					
				
			
			
				maven-assembly-plugin
				3.1.0
				
					 
						src/main/resources/assembly/assembly.xml
					
				
				
					
						make-assembly 
						package 
						
							single
						
					
				
			

		
	

有几点需要说明:

1.网上有许多maven web项目生成可执行war 包的方法。前提是在项目添加web 自启动类,多数估计使用的jetty。

2.上面贴出的是整个build 。这种方式中需要用到配置文件assembly.xml 代码在下面;需要执行可执行类:mainClass;标红的地方要根据实际项目情况而定。

3.我仍然实在项目工作空间下运行mvn package 获得war 包。war 包生成在target 目录下。

assembly.xml 内容如下:


    standalone
    
        zip
    
    
    
    
        
            target/${project.artifactId}.war
            \
        
    
    
        
            src\main\assembly\bin
            \bin
            
                start.sh
            
            0755
            unix
        
        
            src\main\assembly\bin
            \bin
            
                start.bat
            
        
    


你可能感兴趣的:(Maven)