目的:

  1、分离代码和依赖(包括第三方的引入包)

  2、分离配置文件到外部

  3、修改/META-INF/MANIFEST.MF中加载依赖包的位置和启动类,包含第三方依赖jar包

先查看项目的结构

由于我的项目目前依赖的第三方的jar包,在src/lib/xxx.jar所有在打载入外部lib的时候也要把第三方依赖的包载入

<build>
<finalName>bim-wm</finalName>
<plugins>
<plugin>
<artifactId>maven-compiler-plugin</artifactId>
<version>2.3.2</version>
<configuration>
<source>1.8</source>
<target>1.8</target>
</configuration>
</plugin>
<!--MANIFEST.MF 中 Class-Path 加入资源文件目录 -->
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-dependency-plugin</artifactId>
<executions>
<execution>
<id>copy-dependencies</id>
<phase>prepare-package</phase>
<goals>
<goal>copy-dependencies</goal>
</goals>
<configuration>
<outputDirectory>${project.build.directory}/lib</outputDirectory>
<overWriteReleases>false</overWriteReleases>
<overWriteSnapshots>false</overWriteSnapshots>
<overWriteIfNewer>true</overWriteIfNewer>
</configuration>
</execution>
</executions>
</plugin> <plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-jar-plugin</artifactId>
<version>2.6</version>
<configuration>
<archive>
<manifest>
<!--指定入口类 -->
<mainClass>com.jarvis.BimWmApplication</mainClass>
<addClasspath>true</addClasspath>
<!--MANIFEST.MF 中 Class-Path 加入前缀 -->
<classpathPrefix>lib/</classpathPrefix>
<!--jar包不包含唯一版本标识 -->
<useUniqueVersions>false</useUniqueVersions>
</manifest>
<manifestEntries>
<!--MANIFEST.MF 中 Class-Path 加入资源文件目录 -->
<Class-Path>./</Class-Path>
<!-- 要是打入第三方依赖的包的时候,这个重点!!!否则可以忽视,在META-INF/MANIFEST.MF的Class-Path添加加载这3个jar包 -->
<Class-Path>lib/olami-java-client-1.5.1-javadoc.jar lib/olami-java-client-1.5.1-full.jar lib/olami-java-client-1.5.1.jar</Class-Path>
</manifestEntries>
</archive>
<excludes>
<exclude>config/**</exclude>
<!-- 需要过滤2个地方,防止重复将第三方的jar也打进来 -->
<exclude>BOOT-INF/lib/olami-*.jar</exclude>
<exclude>lib/*.jar</exclude>
</excludes>
</configuration>
</plugin> <plugin>
<artifactId>maven-resources-plugin</artifactId>
<executions>
<execution>
<id>copy-resources</id>
<phase>validate</phase>
<goals>
<goal>copy-resources</goal>
</goals>
<configuration>
<outputDirectory>${project.build.directory}</outputDirectory>
<resources>
<resource>
<directory>src/main/resources</directory>
<filtering>true</filtering>
</resource>
</resources>
</configuration> </execution>
</executions>
</plugin>
</plugins>
</build>

最后是这样的(重点是jar包只有200kb扔到服务器也比较方便)

将lib、xxx.jar、applicaion.xml扔到服务器中 ,用java -jar bim-wn.jar启动即可!

springBoot代码和依赖分开打包的更多相关文章

  1. idea基于spring boot的依赖分开打包

    idea版本为2018.3.3 1.在菜单栏点击如图所示图标 Project Structure: 2.选择左侧菜单Artificial,然后在右侧点击 + 号按钮,在弹出的菜单中选择JAR -> ...

  2. springboot+javafx所有依赖一起打包

     执行顺序: 1.使用清理插件:maven-clean-plugin:2.5执行清理删除已有target目录(版本2.5): 2.使用资源插件:maven-resources-plugin:2.6执行 ...

  3. SpringBoot系列三:SpringBoot基本概念(统一父 pom 管理、SpringBoot 代码测试、启动注解分析、配置访问路径、使用内置对象、项目打包发布)

    声明:本文来源于MLDN培训视频的课堂笔记,写在这里只是为了方便查阅. 1.了解SpringBoot的基本概念 2.具体内容 在之前所建立的 SpringBoot 项目只是根据官方文档实现的一个基础程 ...

  4. SpringBoot集成Socket服务后打包(war包)启动时如何启动Socket服务(web应用外部tomcat启动)

      1.首先知道SpringBoot打包为jar和war包是不一样的(只讨论SpringBoot环境下web应用打包)     1.1.jar和war包的打开方式不一样,虽然都依赖java环境,但是j ...

  5. AssetBundle系列——共享资源打包/依赖资源打包

    有人在之前的博客中问我有关共享资源打包的代码,其实这一块很简单,就两个函数: BuildPipeline.PushAssetDependencies():依赖资源压栈: BuildPipeline.P ...

  6. webpack对多个模块依赖进行打包

    [ webpack3.0.0刚刚出来  所以文章是跟着低版本 教程 操作熟悉  结果好多对不上喔] 七:webpack对多个模块依赖进行打包 通过一刚开始我们了解到 webpack支持commonJS ...

  7. (转)AssetBundle系列——共享资源打包/依赖资源打包

    有人在之前的博客中问我有关共享资源打包的代码,其实这一块很简单,就两个函数: BuildPipeline.PushAssetDependencies():依赖资源压栈: BuildPipeline.P ...

  8. 将Qt 动态链接生成的exe及依赖dll打包方法

    源地址:http://blog.csdn.net/ztz0223/article/details/8939341 将Qt 动态链接生成的exe及依赖dll打包方法 原文:http://www.qtcn ...

  9. VC2013 代码图,依赖项关系图,等出错解决办法.

    环境WIN10+VS2013+SQL2015 当VS2013代码图,依赖项关系图等出现 数据库连接错误时 去http://www.microsoft.com/zh-cn/download/detail ...

随机推荐

  1. Decorator - 装饰器

    装饰器 Decorator, 先来看看对 decorator 这个名词的解释, 一个可调用的对象 A (decorator), 返回另一个可调用的对象 B, 在可调用的对象 C 的定义体之前通过语法 ...

  2. [Effective Java 读书笔记] 第三章类和接口 第二十-二十一条

    第二十条 用函数对象表示策略 函数指针(JAVA的函数指针,是指使用对象的引用来作为参数,传递给另一个对象的方法)主要用来实现策略模式,为了在JAVA中实现这种模式,要申明一个接口来表示该策略,并为每 ...

  3. 《自拍教程6》打开Windows文件后缀

    如果你用的是Windows操作系统, 请把文件后缀名打开,千万别隐藏后缀名, 后续有各类 .py, .sh, .bat, .exe等不同文件, 需要你时刻关注文件后缀名. 如果是我看到我手下的测试人员 ...

  4. Kafka运维大全来了!优化、监控、故障处理……

      Kafka概念   Kafka是分布式发布-订阅消息系统.它最初由LinkedIn公司开发,之后成为Apache项目的一部分.Kafka是一个分布式的.可划分的.冗余备份的.持久性的日志服务.它主 ...

  5. vue路由--静态路由

    vue的单页面应用是基于路由和组件的,路由用于设定访问路径,并将路径和组件映射起来.传统的页面应用,是用一些超链接来实现页面切换和跳转的.在vue-router单页面应用中,则是路径之间的切换,也就是 ...

  6. 头部布局,搜索验证和AJAX自动搜索提示,并封装成组件,提高代码复用性

    index.html 头部区结构和样式 效果图 静态样式 index.html中的部分 <!-- 头部 --> <div class="header"> & ...

  7. 表关联使用INNER JOIN实现更新功能

    准备一些数据,创建2张表,表1为学生表: CREATE TABLE [dbo].[Student] ( [SNO] INT NOT NULL PRIMARY KEY, ) NOT NULL, ,) N ...

  8. Qt编写的项目作品3-输入法V2018

    一.功能特点 未采用Qt系统层输入法框架,独创输入切换机制. 纯QWidget编写,支持任何目标平台(亲测windows.linux.嵌入式linux等),支持任意Qt版本(亲测Qt4.6.0到Qt5 ...

  9. ARC-082F Sandglass

    题意 有一个含有两个玻璃球的沙漏,分别称这两个玻璃球为\(

  10. #《Essential C++》读书笔记# 第六章 以template进行编程

    练习题答案 练习6.1 试改写以下类,使它成为一个class template: class example { public: example(double min, double max); ex ...