在生产环境中,java程序的打包方式,如果是web型的一般打成war包。一般服务型的打成jar包。 在springboot中,默认在打包成jar时,会把项目的所有文件打包成一个jar包。这个包会非常大。配置文件内置。不能修改。假如修改,需要重新打包整个项目。由于上面的这些缺点。现在改进打包方式,改进后的打包方式的优点:
- jar包和jar包的依赖lib包分开,在没有新增加依赖时,重新发布项目只需要发布jar包,通常很小只有几百K。
- 项目的config文件和jar分开,如需要修改,重启就可以生效。不用重新打包。
下面详细介绍下步骤:
1.在项目的pom文件中添加build
<build>
<!-- 打包后文件的最终名字-->
<finalName>${artifactId}-${version}</finalName>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<configuration>
<source>1.8</source>
<target>1.8</target>
</configuration>
</plugin>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
<configuration>
<!-- springboot 的main 启动类 方法的入口 -->
<mainClass>cn.com.SpringbootDemoApplication</mainClass>
</configuration>
<executions>
<execution>
<goals>
<goal>repackage</goal>
</goals>
</execution>
</executions>
</plugin>
<!-- The configuration of maven-assembly-plugin -->
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-assembly-plugin</artifactId>
<version>2.6</version>
<!-- The configuration of the plugin -->
<configuration>
<descriptors>
<!-- 配置 assembly 的路径 -->
<descriptor>src/assembly/assembly.xml</descriptor>
</descriptors>
</configuration>
<executions>
<execution>
<id>make-assembly</id>
<phase>package</phase>
<goals>
<goal>single</goal>
</goals>
</execution>
</executions>
</plugin>
</plugins>
</build>
2.新建src/assembly/assembly.xml文件 在该文件中配置具体的打包方式
<assembly>
<id>bin</id>
<formats>
<format>zip</format>
</formats>
<dependencySets>
<dependencySet>
<!--不使用项目的artifact,第三方jar不要解压,打包进zip文件的lib目录-->
<useProjectArtifact>false</useProjectArtifact>
<outputDirectory>lib</outputDirectory>
<unpack>false</unpack>
</dependencySet>
</dependencySets>
<fileSets>
<!-- 把项目脚本文件,打包进zip文件的根目录 -->
<fileSet>
<directory>${project.basedir}/src/bin</directory>
<outputDirectory>bin</outputDirectory>
<includes>
<include>*.sh</include>
</includes>
</fileSet>
<!-- 把配置文件,打包进zip文件的config目录 -->
<fileSet>
<directory>${project.basedir}/src/main/resources</directory>
<outputDirectory>conf</outputDirectory>
<includes>
<include>**/*</include>
<include>*.xml</include>
<include>*.properties</include>
<include>*.yml</include>
<include>*.key</include>
</includes>
</fileSet>
<!-- 把jar,打进zip文件的根目录 -->
<fileSet>
<directory>${project.build.directory}</directory>
<outputDirectory></outputDirectory>
<includes>
<include>*.jar</include>
</includes>
</fileSet>
</fileSets>
</assembly>
新建 src/conf 文件夹,在执行打包的时候会把src/main/resources下面的配置文件打包到zip包的conf文件夹中。
新建src/bin文件夹,在该文件夹中添加对应的项目的启动之类的脚本。打包后会在zip包的bin文件夹中。
最后 执行maven的package命令。在target目录会发现对应的zip 包。
上传到服务器使用 unzip 命令 解压。会得到如下的文件
进入到bin目录发现start.sh脚本 开始运行。
跑起来了嘿。