Spring Boot jar包的本质

admin 2018-6-1 13866

问:

spring boot project, build as a executable jar, but I found cannot extract the executable jar, e.g.

jar xvf spring-boot-foo-0.0.1-SNAPSHOT.jar

nothing output. But when extract a normal jar, it is successful

jar xvf mysql-connector-java-5.1.38.jar
created: META-INF/
inflated: META-INF/MANIFEST.MF
created: META-INF/services/
...

why is this?



答:

You can less your jar file and will find the following:

#!/bin/bash
#
#    .   ____          _            __ _ _
#   /\\ / ___'_ __ _ _(_)_ __  __ _ \ \ \ \
#  ( ( )\___ | '_ | '_| | '_ \/ _` | \ \ \ \
#   \\/  ___)| |_)| | | | | || (_| |  ) ) ) )
#    '  |____| .__|_| |_|_| |_\__, | / / / /
#   =========|_|==============|___/=/_/_/_/
#   :: Spring Boot Startup Script ::
#

That is, it's a bash file follow a jar, not a normal jar.

you can extract this file use : unzip spring-boot-foo-0.0.1-SNAPSHOT.jar

or set the executable flag of spring-boot-maven-plugin to false to make a normal jar file.

<plugin>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-maven-plugin</artifactId>
    <configuration>
        <executable>false</executable>
    </configuration>
</plugin>




最新回复 (0)
返回