1. 為了部署時更加方便,將spring項目的配置文件和依賴jar包打到外面,方便修改.使用maven插件進行打包,打包完后壓縮成zip,方便傳輸.首先配置項目maven,添加兩個插件.
<build>
<finalName>app</finalName>
<plugins>
<plugin>
<!--必須使用apache的打包工具,因為spring的打包插件功能不夠-->
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-jar-plugin</artifactId>
<configuration>
<archive>
<manifest>
<addClasspath>true</addClasspath>
<classpathPrefix>lib</classpathPrefix>
<!-- 程序啟動入口 -->
<mainClass>com.lp.Application</mainClass>
</manifest>
<manifestEntries>
<Class-Path>./</Class-Path>
</manifestEntries>
</archive>
<excludes>
<!--設置不打進jar包的文件-->
<exclude>*.properties</exclude>
<exclude>*.xml</exclude>
<exclude>*.bat</exclude>
</excludes>
</configuration>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-assembly-plugin</artifactId>
<executions>
<execution>
<id>make-zip</id>
<phase>package</phase>
<goals>
<goal>single</goal>
</goals>
<configuration>
<!--配置文件中定義的id不包含到最終文件名里-->
<appendAssemblyId>false</appendAssemblyId>
<descriptors>
<!--配置文件所在的位置-->
<descriptor>src/main/resources/assembly.xml</descriptor>
</descriptors>
</configuration>
</execution>
</executions>
</plugin>
</plugins>
</build>
2. 接下來在resources目錄下新建一個assembly.xml,里面設置打包的具體策略
<?xml version="1.0" encoding="UTF-8"?>
<assembly
xmlns="http://maven.apache.org/plugins/maven-assembly-plugin/assembly/1.1.2"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/plugins/maven-assembly-plugin/assembly/1.1.2 http://maven.apache.org/xsd/assembly-1.1.2.xsd">
<id>package</id>
<formats>
<format>zip</format>
</formats>
<!-- 改為false不會出現兩層相同的目錄 -->
<includeBaseDirectory>false</includeBaseDirectory>
<fileSets>
<fileSet>
<directory>bin</directory>
<outputDirectory>${file.separator}</outputDirectory>
</fileSet>
<fileSet>
<directory>src/main/resources</directory>
<outputDirectory>${file.separator}</outputDirectory>
<!--設置要打進jar包的文件-->
<excludes>
<exclude>static/**</exclude>
<exclude>templates/**</exclude>
<exclude>application.yml</exclude>
</excludes>
<!--設置要打到jar包外面的文件-->
<includes>
<include>application-database.properties</include>
<include>assembly.xml</include>
<include>logback-spring.xml</include>
<include>run.bat</include>
</includes>
</fileSet>
<fileSet>
<directory>${project.build.directory}</directory>
<outputDirectory>${file.separator}</outputDirectory>
<includes>
<include>*.jar</include>
</includes>
</fileSet>
</fileSets>
<dependencySets>
<dependencySet>
<outputDirectory>lib</outputDirectory>
<scope>runtime</scope>
<excludes>
<exclude>${groupId}:${artifactId}</exclude>
</excludes>
</dependencySet>
</dependencySets>
</assembly>
3. run.bat中的內容是運行jar的命令,方便解壓后雙擊運行.
@echo off
java -jar app.jar
pause