maven打包依赖到lib目录

在java、scala的项目开发中,我们总是会遇到项目发布打包的问题,网上大都是介绍将所有的依赖jar打包成一个大的jar包,这样在增加依赖时,需要更新并上传一个大的依赖jar(通常都200M了)到集群,这对于在云服务或者带宽很小的集群部署服务时是很耗时的一个问题,特别随着项目功能的扩展,依赖的第三方jar也越来越多,显然这并不是我想要的。下面就来介绍利用maven将依赖jar添加到一个统一的lib目录,并且介绍如何发布运行。
在项目开发中,会遇到java代码和scala代码混合的情况,所以在maven打包需要分别添加java和scala的打包插件,再添加copy jar的插件:


    
        
            org.apache.maven.plugins
            maven-dependency-plugin
            
                
                    copy-dependencies
                    package
                    
                        copy-dependencies
                    
                    
                        target/lib
                        false
                        true
                    
                
            
        
        
        
            net.alchim31.maven
            scala-maven-plugin
            3.3.1
            
                
                    
                        compile
                        testCompile
                    
                    
                        
                            -dependencyfile
                            ${project.build.directory}/.scala_dependencies
                        
                    
                
            
        
        
        
            org.apache.maven.plugins
            maven-jar-plugin
        
    

如果需要打包scala的代码时,需要添加如下依赖:


    org.scala-lang
    scala-library
    2.10.6
    provided

至此,maven的打包插件已经配置好,只需要在idea执行maven clear package,如下图:

maven打包依赖到lib目录_第1张图片
KAG)6J_O6HTZLAS6)5ZR~NV.png

如果提示打包成功,紧接着就可以在项目所在的目录下,如图:
maven打包依赖到lib目录_第2张图片
@1{Z7{VBLFDSM%B30T0YK7P.png

分别将上图两个目录和文件上传到服务器,下次如果有更新依赖,只需要在lib中增加或删除对应的jar即可,如果是普通的java、scala程序,建议参照: http://www.cnblogs.com/qifengshi/p/6036870.html的打包方式,当然也可以继续往下看:
1、普通的scala、java项目

for file in ${libs_path}*.jar
do
  if test -f $file
  then
    jars=${jars}:$file
  fi
done
if [ "$jars" != "" ]; then
  jars=${jars#*:}
fi
echo ${jars}

2、Spark程序发布

for file in ${libs_path}*.jar
do
  if test -f $file
  then
    jars=${jars},$file
  fi
done
if [ "$jars" != "" ]; then
  jars=${jars#*,}
fi
echo ${jars}

两者只有在jar包的分隔符上有区别。

你可能感兴趣的:(maven打包依赖到lib目录)