前言
本人在公司担任的活儿比较杂,包括部署上线,调试都是自己干.那么在项目打包部署遇到以下困扰
- 项目打包,代码本身不多,但是依赖太重,导致打出的jar包很大,上传到服务器比较慢
- 配置文件打包到jar包内部,不便于调试修改
这是一个springboot+maven写的demo,主要演示springboot项目通过maven插件,将依赖与配置文件打包到jar包外部,实现灵活的项目管理.仅供参考学习
方法总比问题多,觉得我这个办法比较low的,请不要往下看
- 适用场景:内网项目
- 如果是外网项目建议用更优雅的解决方案,比如使用脚本拉取代码,用配置中心动态修改配置.
一.创建SpringBoot项目
1.用idea新建项目
2.填写项目信息
3.这里勾选spring web 版本选择低版本
4.选择 项目名,然后finish
5.新建一个TestController,写先经典的hello world
package xyz.hashdog.pk;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
@RestController
public class TestController {
@RequestMapping("test")
public String test(){
return "hello world";
}
}
6.配置文件改一下端口
server.port=4567
7.启动项目
8.成功访问接口
http://localhost:4567/test
二.项目打包
1.执行package打包(默认打包到target目录)
2.修改pom文件
去掉原有的spring-boot-maven-plugin
将pom.xml中的plugin修改为
<plugins>
<!-- 依赖包插件 -->
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-dependency-plugin</artifactId>
<executions>
<execution>
<id>copy-dependencies</id>
<phase>package</phase>
<goals>
<goal>copy-dependencies</goal>
</goals>
<configuration>
<outputDirectory>${project.build.directory}/app/lib</outputDirectory>
<!-- 是否不包含间接依赖 -->
<excludeTransitive>false</excludeTransitive>
<!-- 忽略版本 -->
<stripVersion>false</stripVersion>
</configuration>
</execution>
</executions>
</plugin>
<!-- maven资源文件复制插件 -->
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-resources-plugin</artifactId>
<version>2.7</version>
<executions>
<execution>
<id>copy-config</id>
<phase>package</phase>
<goals>
<goal>copy-resources</goal>
</goals>
<configuration>
<outputDirectory>${project.build.directory}/app/config</outputDirectory>
<resources>
<resource>
<directory>src/main/resources</directory>
<includes>
<exclude>**/*.xml</exclude>
<exclude>**/*.conf</exclude>
<exclude>**/*.properties</exclude>
</includes>
<filtering>true</filtering>
</resource>
</resources>
<encoding>UTF-8</encoding>
</configuration>
</execution>
</executions>
</plugin>
<!-- 可执行jar插件 -->
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-jar-plugin</artifactId>
<version>3.1.0</version>
<configuration>
<outputDirectory>${project.build.directory}/app/bin</outputDirectory>
<!--这些配置将写入到MANIFEST.MF文件中-->
<archive>
<!--指定程序入口-->
<manifest>
<addClasspath>true</addClasspath>
<classpathPrefix>../lib/</classpathPrefix>
<mainClass>xyz.hashdog.pk.PkApplication</mainClass>
</manifest>
<!-- (配置文件外置目录) -->
<manifestEntries>
<Class-Path>../config/</Class-Path>
</manifestEntries>
</archive>
<excludes>
<exclude>**/*.xml</exclude>
<exclude>**/*.conf</exclude>
<exclude>**/*.properties</exclude>
<exclude>**/*/*.json</exclude>
</excludes>
</configuration>
</plugin>
</plugins>
3.执行package,将整个项目打包到app目录下了
4.将config中properties配置文件端口改为4568,的启动jar文件
5.访问成功
localhost:4568/test
三.代码参考
https://download.csdn.net/download/corleone_4ever/12378074