maven打包依赖到lib目录

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

<build>
    <plugins>
        <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-dependency-plugin</artifactId>
            <executions>
                <execution>
                    <id>copy-dependencies</id>
                    <phase>package</phase>
                    <goals>
                        <goal>copy-dependencies</goal>
                    </goals>
                    <configuration>
                        <outputDirectory>target/lib</outputDirectory>
                        <excludeTransitive>false</excludeTransitive>
                        <stripVersion>true</stripVersion>
                    </configuration>
                </execution>
            </executions>
        </plugin>
        <!--scala打包插件-->
        <plugin>
            <groupId>net.alchim31.maven</groupId>
            <artifactId>scala-maven-plugin</artifactId>
            <version>3.3.1</version>
            <executions>
                <execution>
                    <goals>
                        <goal>compile</goal>
                        <goal>testCompile</goal>
                    </goals>
                    <configuration>
                        <args>
                            <arg>-dependencyfile</arg>
                            <arg>${project.build.directory}/.scala_dependencies</arg>
                        </args>
                    </configuration>
                </execution>
            </executions>
        </plugin>
        <!--java代码打包插件,不会将依赖也打包-->
        <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-jar-plugin</artifactId>
        </plugin>
    </plugins>
</build>

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

<dependency>
    <groupId>org.scala-lang</groupId>
    <artifactId>scala-library</artifactId>
    <version>2.10.6</version>
    <scope>provided</scope>
</dependency>

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

KAG)6J_O6HTZLAS6)5ZR~NV.png

如果提示打包成功,紧接着就可以在项目所在的目录下,如图:
@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包的分隔符上有区别。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 136,084评论 19 139
  • Spring Boot 参考指南 介绍 转载自:https://www.gitbook.com/book/qbgb...
    毛宇鹏阅读 47,144评论 6 342
  • Android 自定义View的各种姿势1 Activity的显示之ViewRootImpl详解 Activity...
    passiontim阅读 176,115评论 25 709
  • 很想找回初二的一随笔本,那里有我少年时期千奇百怪的幻想,关于外星人、关于魔幻、关于武林。 从前拿起笔,以同学为原型...
    林一毛阅读 1,162评论 1 0
  • 端午利好的“真相” 这个端午节,应该是管理层释放最多利好的节日,新股发行节奏的相对放缓,对上市公司盲目圈钱...
    赢家说_4d25阅读 2,555评论 0 0

友情链接更多精彩内容