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

1简介

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

java -jar ***.jar

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

2Jar包制作

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

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

  1. 项目结构如下:
    Spring Boot项目制作Jar包和Jar包结构的分析_第1张图片
  2. jar包制作过程

在这里插入图片描述

2.2pom.xml修改位置

2.2.1pom中待修改位置

修改位置如下图所示:
Spring Boot项目制作Jar包和Jar包结构的分析_第2张图片

2.2.2项目发布形式修改为jar

<packaging>jarpackaging>

2.2.2编译时包含第三方lib

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

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

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

2.2.3打包时打入BOOT-INF/lib


<resources>
    <resource>
        <directory>src\main\resources\libdirectory>
        <targetPath>BOOT-INF\libtargetPath>
      
    resource>
    <resource>
        <directory>src/main/resourcesdirectory>
    resource>
resources>

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

3 Jar包结构分析

3.1 jar包目录结构

把jar包使用好压解压之后可以看到jar包中的目录结构如下:
Spring Boot项目制作Jar包和Jar包结构的分析_第3张图片

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

你可能感兴趣的:(Spring,Boot,IDEA)