• java应用的jar包多合一


    之前开发的java程序由于依赖比较多的jar包,启动命令为” java -classpath .:lib/*.jar 主类名“,这种启动方式需要指定类路径、入口类名称,并存在jar包缺失隐患。

    现在利用SpringBoot的maven打包插件,可以将依赖的jar包都整理到一个jar文件中。

    一、创建maven项目

    名字随便起。这里叫ConfigClient。在pom.xml文件中使用如下插件。

    指定mainClass,注意这个mainClass不是当前项目的类,是我们自己写的程序的主类。

     1 <plugin>
     2                 <groupId>org.springframework.boot</groupId>
     3                 <artifactId>spring-boot-maven-plugin</artifactId>
     4                 <configuration>
     5                     <mainClass>com.bonc.tool.Tool2</mainClass>
     6                      <layout>ZIP</layout>
     7                 </configuration>
     8                 <executions>
     9                     <execution>
    10                         <goals>
    11                             <goal>repackage</goal>
    12                         </goals>
    13                     </execution>
    14                 </executions>
    15             </plugin>
    SpringBoot打包插件

    二、打包

    mvn package

    三、进入到target中

    1.解压jar文件

    jar xf ConfigClient.jar 

    得到三个目录:

    (1)org 应用入口类,负责加载校验jar包

    (2)BOOT-INF 包含两个目录

      lib classes, lib用来存放所有被依赖的jar包,classes是存放我们自己开发的程序

    (3)META-INF 包含一个本文的中心文件MANIFEST.MF 在启动java程序时会首先读取这个文件,来获得主类路径。

    Manifest-Version: 1.0
    Archiver-Version: Plexus Archiver
    Built-By: ChaseForFuture
    Start-Class: com.bonc.tool.Tool2 # pom文件所写的mainClass,在BOOT-INF/classes/中
    Spring-Boot-Classes: BOOT-INF/classes/ # 我们自己写的所有程序
    Spring-Boot-Lib: BOOT-INF/lib/ # 我们的程序依赖的jar包
    Spring-Boot-Version: 1.5.9.RELEASE
    Created-By: Apache Maven 3.2.1
    Build-Jdk: 1.8.0_131
    Main-Class: org.springframework.boot.loader.PropertiesLauncher # java应用程序入口类

    2.移动文件

    如果我们写的程序没有打包为jar文件,这里将它们放入 BOOT-INF/classes中

    如果我们写的程序已经打包为jar文件,这里将jar文件以及依赖的所有jar包放入 BOOT-INF/lib中

    3.不压缩式打包

    jar -cvfM0 ConfigClient.jar BOOT-INF META-INF org

    -c表示create即创建新文件

    -v表示列出verbose详细信息

    -f指定文件名字

    -M不创建新的MANIFEST.MF

    -0 不进行压缩,仅将文件整理到一起。

    这个0必须加上,表示不压缩。因为内部jar包已经压缩了,这里再次压缩,会造成内部jar无法读取。

    4.运行jar包

    java -jar ConfigClient.jar

    这时,一个可运行的jar包可以使用了。

  • 相关阅读:
    sp_executesql 带输出参数的 EXEC 动态执行 (z)
    查端口是否被占用 DOS 命令netstat(Z)
    MS SQL处理树型结构数据 将子节点记录的各项字段值累加赋值给其父节点
    lazarus unidac使用注意事项
    UNIDAC在arm linux运行出错的解决方法
    [转]为Linux下的Lazarus添加中文输入支持
    银河麒麟(aarch64)安装Lazarus步骤
    raspberry 添加拼音五笔输入法
    lazarus跨平台编译步骤
    拷贝构造函数与赋值操作符的具体实现 【转】参考度4.5星
  • 原文地址:https://www.cnblogs.com/zhengwenqiang/p/8146719.html
Copyright © 2020-2023  润新知