java 项目打包部署

零、跳过单元测试


            
                org.apache.maven.plugins
                maven-compiler-plugin
                2.3.2
                
                    true
                    
                    ${project.build.sourceEncoding}
                
            
            
                org.apache.maven.plugins
                maven-surefire-plugin
                
                    true
                
            

一、打包

1、在pom.xml中指定main类


   maven-assembly-plugin
   
      false
     
         jar-with-dependencies
     

     
         
           
            com.a.App
         

     

   

   
     
         make-assembly
         package
         
            assembly
         

     

   


 

2、打第三方包的mvn命令

#dependency:copy-dependencies 是将依赖的包打到dependency目录下
打包:clean package dependency:copy-dependencies 

#-DoutputDirectory=lib 是将依赖的包打到指定(lib)目录下
打包:clean package dependency:copy-dependencies -DoutputDirectory=lib

 

二、项目启动

例:

jar包path: D:\software\eclispe-workspace\eclipse13\sunxj-package\target\lib\sunxj-package-0.0.1-SNAPSHOT.jar

D:\software\eclispe-workspace\eclipse13\sunxj-package\target>java -jar lib/sunxj-package-0.0.1-SNAPSHOT.jar com.a
+++++++++++++package-test++++++++++++++++

D:\software\eclispe-workspace\eclipse13\sunxj-package\target>java -classpath lib/* com.a.App
+++++++++++++package-test++++++++++++++++

D:\software\eclispe-workspace\eclipse13\sunxj-package\target>java -cp lib/* com.a.App
+++++++++++++package-test++++++++++++++++  注:类加载器为app

D:\software\eclispe-workspace\eclipse13\sunxj-package\target>java -Djava.ext.dirs=lib com.a.App
+++++++++++++package-test++++++++++++++++  注:类加载器为ext

 

三、第三方包打到lib下

1、pom配置:


        
        
            

            
            
                org.apache.maven.plugins
                maven-jar-plugin
                
                    
                        
                            true
                            
                            lib/
                            
                            com.test.service.ServerStartup
                        

                    

                

            

            
            
                org.apache.maven.plugins
                maven-dependency-plugin
               
                   
                        copy
                        package
                       
                            copy-dependencies
                       

                       
                            ${project.build.directory}/lib
                       

                   

               

           

        
    

 

2、目录结构

3、启动脚本

java -jar sunxj-mail-0.0.1-SNAPSHOT.jar

 

四、SpringBoot--使用appassembler-maven-plugin打包

      appassembler-maven-plugin是一个用来为Java应用打包并生成启动脚本的Maven插件,使用起来非常简单,只需要在项目的pom.xml中加入插件的相关配置即可。它在脚本打包过程中,能够将项目的所有依赖自动复制到指定的打包目录中,并将这些依赖添加到classpath中。

官网地址:http://www.mojohaus.org/appassembler/appassembler-maven-plugin/  

一:生成可执行的启动脚本

打包命令:mvn clean package appassembler:assemble 

    
        
            
                org.codehaus.mojo
                appassembler-maven-plugin
                2.0.0
                
                    
                    
                        unix
                        windows
                    

                    
                    ${project.build.directory}/${project.name}
                    
                    lib
                    
                    
                    bin
                    
                    conf
                    
                    true
                    
                    src/main/resources
                    flat
                    UTF-8
                    logs
                    tmp
                    
                        
                            
                            com.pengjunlee.MyApplication
                            
                                
                                    -server
                                    -Xmx1G
                                    -Xms1G
                                

                            

                        

                    

                

            

        

    

二:生成后台服务程序

打包命令:mvn clean package appassembler:generate-daemons

Usage: { console | start | stop | restart | status | dump } 

    
        
            
                org.codehaus.mojo
                appassembler-maven-plugin
                2.0.0
                
                    
                    ${project.build.directory}/${project.name}
                    
                    lib
                    
                    bin
                    
                    conf
                    
                    true
                    
                    src/main/resources
                    
                    flat
                    UTF-8
                    logs
                    tmp
                    
                        
                            com.pengjunlee.MyApplication
                            
                                jsw
                            

                            
                                
                                    jsw
                                    
                                        linux-x86-32
                                        linux-x86-64
                                        windows-x86-32
                                        windows-x86-64
                                    

                                    
                                        
                                            configuration.directory.in.classpath.first
                                            conf
                                        

                                        
                                            wrapper.ping.timeout
                                            120
                                        

                                        
                                            set.default.REPO_DIR
                                            lib
                                        

                                        
                                            wrapper.logfile
                                            logs/wrapper.log
                                        

                                    

                                

                            

                            
                                
                                
                                    com.sun.management.jmxremote
                                    com.sun.management.jmxremote.port=1984
                                    com.sun.management.jmxremote.authenticate=false
                                    com.sun.management.jmxremote.ssl=false
                                

                            

                        

                    

                

            

        

    

 

 

五、SpringBoot--使用appassembler-maven-plugin打包

1、pom.xml

            
                org.springframework.boot
                spring-boot-maven-plugin
                
                    a.App
                
                
                    
                        
                            repackage
                        
                    
                
            

            
                org.apache.maven.plugins
                maven-assembly-plugin
                
                    
                        
                            true
                            a.App 
                        
                    
                    sunxj-package
                    
                        src/main/assembly/assembly.xml
                    
                
                
                    
                        make-assembly
                        package
                        
                            single
                        
                    
                
            

注:spring-boot-maven-plugin可有可无。有时,启动脚本为java -jar sunxj-package.jar。没有时,启动脚本为java -cp ./lib/* a.App

2、assembly.xml



    ${project.version}
    
        dir
    
    false
    
        
            src/main/bin
            bin
        
    
    
        
            false
            true
            lib
            provided
        
        
            false
            true
            lib
            system
        
        
            false
            true
            lib
            runtime
        
    

 

你可能感兴趣的:(JAVA)