独立可执行包
自动化部署时,可以打包成一个独立的可执行的jar包,方便和docker结合制作独立镜像。相关配置:
<build>
<finalName>finalName</finalName>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<configuration>
<source>1.8</source>
<target>1.8</target>
</configuration>
</plugin>
</plugins>
<!-- 主要配置:将引用的 jar 包打进生成的 jar 文件的 BOOT-INF/lib 目录中 -->
<resources>
<resource>
<directory>lib</directory>
<targetPath>lib</targetPath>
<includes>
<include>**/*.jar</include>
</includes>
</resource>
<resource>
<directory>src/main/resources</directory>
</resource>
</resources>
</build>
打包命令:
mvn clean package -D skipTests
将依赖包放到外面
当手动部署程序时,每次都要上传动辄几十兆的包有点费时,这时候可以考虑将依赖包放到外面的lib目录,有依赖变动时改变相关包即可。有时候需要引进本地包,同样需要自动打包到lib目录并且在MANIFEST中引入。
本地依赖配置:
<dependency>
<groupId>com.taobao.api</groupId>
<artifactId>taobao-sdk</artifactId>
<version>1.0.0</version>
<scope>system</scope>
<systemPath>${project.basedir}/lib/taobao-sdk-1.0.0.jar</systemPath>
</dependency>
打包相关配置:
<build>
<finalName>finalName</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.apache.maven.plugins</groupId>
<artifactId>maven-jar-plugin</artifactId>
<version>2.6</version>
<configuration>
<archive>
<manifest>
<mainClass>com.tj.server.Application</mainClass>
<addClasspath>true</addClasspath>
<classpathPrefix>lib/</classpathPrefix>
</manifest>
<manifestEntries>
<Class-Path>./</Class-Path>
<Class-Path>lib/taobao-sdk-1.0.0.jar</Class-Path>
</manifestEntries>
</archive>
<excludes>
<exclude>application*.yml</exclude>
</excludes>
</configuration>
</plugin>
</plugins>
</build>
注意:本地文件的包名、写入manifest的包名、maven依赖配置的包名要一致。
打包命令:
mvn clean package -D skipTests
mvn dependency:copy-dependencies -DoutputDirectory=F:\\tj\\server\\target\\lib -DincludeScope=runtime
mvn dependency:copy-dependencies -DoutputDirectory=F:\\tj\\server\\target\\lib -DincludeScope=system