springboot应用通过maven插件appassembler-maven-plugi生成启动脚本bat和sh。根据官网介绍,这个插件主要用于生成启动 java应用程序的脚本,能将项目依赖jar能够打包目录中,并且它们加入启动脚本类路径中。
主要命令
appassembler:assemble 打包项目并且配置bin 启动脚本,可以理解为使用类似spring-boot-maven-plugin打包出来项目,可以通过java -jar 方式启动项目,但是不支持stop、satus、restart这些操作,比较原始。
appassembler:create-repository 创建一个 appassembler 存储库,就是将工程打成jar
appassembler:generate-daemons 生成基于 JSW 的守护进程包装器,大多数人都是使用这个。
参考文档
appassembler-maven-plugin 插件为 SpringBoot 项目生成启动脚本
https://www.jb51.net/article/191442.htm
MavenAssemblyDemoApplication
package com.zrj.maven.assembly.demo;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
/**
* MavenAssemblyDemoApplication
*
* @author zrj
* @since 20221117
*/
@RestController
@SpringBootApplication
public class MavenAssemblyDemoApplication {
public static void main(String[] args) {
SpringApplication.run(MavenAssemblyDemoApplication.class, args);
}
/**
* Hello World!
* If you open a web browser to localhost:8080, you should see the following output:
*
* @see 1 https://docs.spring.io/spring-boot/docs/2.7.5/reference/htmlsingle/
*/
@RequestMapping("/")
String home() {
long currentTime = System.currentTimeMillis();
String helloTime = currentTime + ":Hello World!";
System.out.println(helloTime);
return helloTime;
}
}
pom.xml
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0modelVersion>
<parent>
<groupId>org.springframework.bootgroupId>
<artifactId>spring-boot-starter-parentartifactId>
<version>2.7.5version>
<relativePath/>
parent>
<groupId>com.zrjgroupId>
<artifactId>maven-assembly-demoartifactId>
<version>1.0.0-SNAPSHOTversion>
<name>maven-assembly-demoname>
<description>Demo project for Spring Bootdescription>
<properties>
<java.version>1.8java.version>
properties>
<dependencies>
<dependency>
<groupId>org.springframework.bootgroupId>
<artifactId>spring-boot-starter-webartifactId>
dependency>
<dependency>
<groupId>org.springframework.bootgroupId>
<artifactId>spring-boot-starter-testartifactId>
<scope>testscope>
dependency>
dependencies>
<build>
<plugins>
<plugin>
<groupId>org.codehaus.mojogroupId>
<artifactId>appassembler-maven-pluginartifactId>
<version>2.1.0version>
<executions>
<execution>
<id>make-assemblyid>
<phase>packagephase>
<goals>
<goal>assemblegoal>
goals>
execution>
executions>
<configuration>
<repositoryLayout>flatrepositoryLayout>
<configurationSourceDirectory>src/main/resourcesconfigurationSourceDirectory>
<includeConfigurationDirectoryInClasspath>trueincludeConfigurationDirectoryInClasspath>
<copyConfigurationDirectory>truecopyConfigurationDirectory>
<assembleDirectory>${project.build.directory}/clientassembleDirectory>
<configurationDirectory>confconfigurationDirectory>
<repositoryName>librepositoryName>
<binFolder>binbinFolder>
<platforms>
<platform>windowsplatform>
<platform>unixplatform>
platforms>
<binFileExtensions>
<unix>.shunix>
<windows>.batwindows>
binFileExtensions>
<encoding>UTF-8encoding>
<logsDirectory>logslogsDirectory>
<tempDirectory>tmptempDirectory>
<extraJvmArguments>-Xms128mextraJvmArguments>
<programs>
<program>
<mainClass>com.zrj.maven.assembly.demo.MavenAssemblyDemoApplicationmainClass>
<name>startname>
program>
programs>
configuration>
plugin>
plugins>
build>
project>
执行命令或者使用idea
执行命令:maven install
idea:maven-lifecycle依次执行clean,install
|—— target
| |—— client
| | |—— bin
| | | |—— start.sh # linux平台下的启动脚本
| | | |—— start.bat # windows平台下的启动脚本
| |—— conf
| | |—— application.properties # 项目配置文件
| |—— lib
| | |—— 各种依赖jar包
| |—— logs
| |—— tmp

./start.bat 或者./start.sh
浏览器访问:http://localhost:8080/
刷新页面:1668682483758:Hello World!