maven assembly打包生成Java應(yīng)用啟動(dòng)腳本bat和sh的方法
1. maven插件介紹
springboot應(yīng)用通過maven插件appassembler-maven-plugi生成啟動(dòng)腳本bat和sh。根據(jù)官網(wǎng)介紹,這個(gè)插件主要用于生成啟動(dòng) java應(yīng)用程序的腳本,能將項(xiàng)目依賴jar能夠打包目錄中,并且它們加入啟動(dòng)腳本類路徑中。
主要命令
appassembler:assemble 打包項(xiàng)目并且配置bin 啟動(dòng)腳本,可以理解為使用類似spring-boot-maven-plugin打包出來項(xiàng)目,可以通過java -jar 方式啟動(dòng)項(xiàng)目,但是不支持stop、satus、restart這些操作,比較原始。
appassembler:create-repository 創(chuàng)建一個(gè) appassembler 存儲(chǔ)庫,就是將工程打成jar
appassembler:generate-daemons 生成基于 JSW 的守護(hù)進(jìn)程包裝器,大多數(shù)人都是使用這個(gè)。
參考文檔
appassembler-maven-plugin 插件為 SpringBoot 項(xiàng)目生成啟動(dòng)腳本
http://www.dbjr.com.cn/article/191442.htm
2. 生成啟動(dòng)腳本
2.1 創(chuàng)建springboot應(yīng)用
2.2 創(chuàng)建啟動(dòng)測(cè)試類
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;
}
}
2.3 maven依賴配置
pom.xml
<?xml version="1.0" encoding="UTF-8"?>
<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.0</modelVersion>
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.7.5</version>
<relativePath/> <!-- lookup parent from repository -->
</parent>
<groupId>com.zrj</groupId>
<artifactId>maven-assembly-demo</artifactId>
<version>1.0.0-SNAPSHOT</version>
<name>maven-assembly-demo</name>
<description>Demo project for Spring Boot</description>
<properties>
<java.version>1.8</java.version>
</properties>
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
</dependency>
</dependencies>
<!-- appassembler-maven-plugin插件自動(dòng)生成java項(xiàng)目啟動(dòng)腳本sh或者bat-->
<build>
<plugins>
<plugin>
<groupId>org.codehaus.mojo</groupId>
<artifactId>appassembler-maven-plugin</artifactId>
<version>2.1.0</version>
<!-- 如果不配置 generate-daemons,則打包命令為 mvn clean package appassembler:assemble -->
<!-- 如果配置了 generate-daemons,打包命令可以是 mvn clean package 也可以是 mvn clean package appassembler:assemble -->
<executions>
<execution>
<id>make-assembly</id>
<phase>package</phase>
<goals>
<goal>assemble</goal>
</goals>
</execution>
</executions>
<configuration>
<!-- flat與lib共同決定將項(xiàng)目用的的所有jar包復(fù)制到lib目錄下 -->
<repositoryLayout>flat</repositoryLayout>
<!--從哪里copy配置文件-->
<configurationSourceDirectory>src/main/resources</configurationSourceDirectory>
<includeConfigurationDirectoryInClasspath>true</includeConfigurationDirectoryInClasspath>
<!--是否copy配置文件-->
<copyConfigurationDirectory>true</copyConfigurationDirectory>
<!--生成的項(xiàng)目的目錄位置,這里的client是項(xiàng)目的名稱,你可以根據(jù)你的需要自己隨便命名-->
<assembleDirectory>${project.build.directory}/client</assembleDirectory>
<!--配置文件存放在conf目錄路徑-->
<configurationDirectory>conf</configurationDirectory>
<!-- 打包的jar,以及maven依賴的jar放到這個(gè)目錄里面 -->
<repositoryName>lib</repositoryName>
<!-- 可執(zhí)行腳本的目錄 -->
<binFolder>bin</binFolder>
<!-- 生成linux, windows兩種平臺(tái)的執(zhí)行腳本 -->
<platforms>
<platform>windows</platform>
<platform>unix</platform>
</platforms>
<!-- 針對(duì)不同平臺(tái)生成不同類型的啟動(dòng)腳本 -->
<binFileExtensions>
<unix>.sh</unix>
<windows>.bat</windows>
</binFileExtensions>
<!--編碼,日志-->
<encoding>UTF-8</encoding>
<logsDirectory>logs</logsDirectory>
<tempDirectory>tmp</tempDirectory>
<!--java啟動(dòng)參數(shù)-->
<extraJvmArguments>-Xms128m</extraJvmArguments>
<programs>
<program>
<!--指定主類,腳本名。會(huì)生成shell/bat兩種類型,也可用platforms指定運(yùn)行平臺(tái)-->
<mainClass>com.zrj.maven.assembly.demo.MavenAssemblyDemoApplication</mainClass>
<!-- 生成的腳本文件的名稱,比如start.sh,你也可以根據(jù)你的需要命名成其他名字 -->
<name>start</name>
</program>
</programs>
</configuration>
</plugin>
</plugins>
</build>
</project>
3. 測(cè)試驗(yàn)證
3.1 執(zhí)行命令
執(zhí)行命令或者使用idea
執(zhí)行命令:maven install
idea:maven-lifecycle依次執(zhí)行clean,install
3.2 生成腳本
|—— target | |—— client | | |—— bin | | | |—— start.sh # linux平臺(tái)下的啟動(dòng)腳本 | | | |—— start.bat # windows平臺(tái)下的啟動(dòng)腳本 | |—— conf | | |—— application.properties # 項(xiàng)目配置文件 | |—— lib | | |—— 各種依賴jar包 | |—— logs | |—— tmp

3.3 啟動(dòng)腳本驗(yàn)證
./start.bat 或者./start.sh
瀏覽器訪問:http://localhost:8080/
刷新頁面:1668682483758:Hello World!
到此這篇關(guān)于maven assembly打包生成Java應(yīng)用啟動(dòng)腳本bat和sh的文章就介紹到這了,更多相關(guān)maven assembly打包生成啟動(dòng)腳本bat和sh內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
Java編程Socket實(shí)現(xiàn)多個(gè)客戶端連接同一個(gè)服務(wù)端代碼
這篇文章主要介紹了Java編程Socket實(shí)現(xiàn)多個(gè)客戶端連接同一個(gè)服務(wù)端代碼,具有一定參考價(jià)值,需要的朋友可以了解下。2017-11-11
Java中使用輾轉(zhuǎn)相除法求最大公約數(shù)
這篇文章主要介紹了Java中使用輾轉(zhuǎn)相除法求最大公約數(shù),本文直接給出代碼實(shí)例,需要的朋友可以參考下2015-05-05
java 正則表達(dá)式獲取兩個(gè)字符中間的字符串方法
今天小編就為大家分享一篇java 正則表達(dá)式獲取兩個(gè)字符中間的字符串方法,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧2018-07-07
java實(shí)現(xiàn)批量導(dǎo)入.csv文件到mysql數(shù)據(jù)庫
這篇文章主要為大家詳細(xì)介紹了java實(shí)現(xiàn)批量導(dǎo)入.csv文件到mysql數(shù)據(jù)庫,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2019-08-08
淺談java中String StringBuffer StringBuilder的區(qū)別
下面小編就為大家?guī)硪黄獪\談java中String StringBuffer StringBuilder的區(qū)別。小編覺得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧2016-06-06
springboot程序啟動(dòng)慢-未配置hostname的解決
這篇文章主要介紹了springboot程序啟動(dòng)慢-未配置hostname的解決方案,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2021-08-08
Java內(nèi)部類原理與用法實(shí)例總結(jié)
這篇文章主要介紹了Java內(nèi)部類原理與用法,結(jié)合實(shí)例形式總結(jié)分析了非靜態(tài)內(nèi)部類、靜態(tài)內(nèi)部類、局部類等相關(guān)概念、原理、用法及相關(guān)操作注意事項(xiàng),需要的朋友可以參考下2018-08-08

