Spring Boot项目制作Jar包和Jar包结构的分析

1简介

在出差的过程中,在项目执行的初期,由于需要给客户提供一个可执行的程序,由于当时时间的缘故,采用了提供jar包的形式,因为jar包只要通过

java -jar ***.jar

就可以作为一个独立的程序,可以让其他的程序进行调用服务。现在简单的介绍这个jar包的制作过程和jar包中的结构。

2Jar包制作

可参考博客
Springboot项目(包含第三方jar包)打成jar包方法

2.1项目结构和jar包制作过程

  1. 项目结构如下:
    在这里插入图片描述
  2. jar包制作过程

在这里插入图片描述

2.2pom.xml修改位置

2.2.1pom中待修改位置

修改位置如下图所示:
在这里插入图片描述

2.2.2项目发布形式修改为jar

<packaging>jar</packaging>

2.2.2编译时包含第三方lib

其中如果要制作jar,需要在< plugins >中添加maven插件maven-compiler-plugin,具体的代码如下:

<plugin>
    <groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-compiler-plugin</artifactId>
    <version>${maven-compiler-plugin.version}</version>
    <configuration>
        <source>1.8</source>
        <target>1.8</target>
        <skip>true</skip>
        <encoding>UTF-8</encoding>
        <compilerArguments>
            <extdirs>${project.basedir}/src/main/resources/lib</extdirs>
        </compilerArguments>
    </configuration>
</plugin>

否则在执行maven package时会提示编译时找不到导入的第三方包中相关类的.

2.2.3打包时打入BOOT-INF/lib

<!-- 主要配置:将引用的第三方 jar 包打进生成的 jar 文件的 BOOT-INF/lib 目录中 -->
<resources>
    <resource>
        <directory>src\main\resources\lib</directory>
        <targetPath>BOOT-INF\lib</targetPath>
      <!--  <includes>
            <include>**/*.jar</include>
        </includes>-->
    </resource>
    <resource>
        <directory>src/main/resources</directory>
    </resource>
</resources>

这样在打包时首先执行clean,然后执行package即可完成jar包制作。
在这里插入图片描述

3 Jar包结构分析

3.1 jar包目录结构

把jar包使用好压解压之后可以看到jar包中的目录结构如下:
在这里插入图片描述

3.2 META-INF

在META-INF目录中有三个较为重要的文件,pom.xml和pom.properties和与maven同级的MANIFEST.MF,其中pom.xml即项目对应的pom.xml,

3.2.1 pom.properties

#Created by Apache Maven 3.3.9
version=0.0.1-SNAPSHOT
groupId=com.cetc52
artifactId=platform

对应了项目的三个坐标。

3.2.2 MANIFEST.MF

Manifest-Version: 1.0
Implementation-Title: platform
Implementation-Version: 0.0.1-SNAPSHOT
Built-By: lenovo
Implementation-Vendor-Id: com.cetc52
Spring-Boot-Version: 2.0.3.RELEASE
Main-Class: org.springframework.boot.loader.JarLauncher
Start-Class: com.cetc52.platform.PlatformApplication
Spring-Boot-Classes: BOOT-INF/classes/
Spring-Boot-Lib: BOOT-INF/lib/
Created-By: Apache Maven 3.3.9
Build-Jdk: 1.8.0_131
Implementation-URL: https://projects.spring.io/spring-boot/#/spring-bo
 ot-starter-parent/platform

关于Main-Class和Start-Class参见spring boot应用启动原理分析

3.3 BOOT-INF

在BOOT-INF中lib目录包含了Maven的jar依赖和第三方导入的jar依赖,这样才能顺利的运行该jar。classes目录则包含了全量的程序员编写的类对应的class文件。其中在BOOT-INF/classes目录中包含配置文件application.properties,该文件记录了项目的配置信息,如果是打成了war包,则可以直接修改该配置文件,重启tomcat即可修改相关的配置。

4总结

博客简要的说明了jar包制作的过程,并且简单阐述了jar包中各个目录中的内容和含义。通过把程序制作成jar包,也可以熟悉其他jar包中的结构和框架,对于加深java程序的理解是很有帮助的,实践是检验真理的唯一标准,动手制作个jar包就能理解许多不理解的东西了。加油。

									2019-03-311214于南京理工大学四教A111
  • 4
    点赞
  • 17
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值