maven assembly打包生成Java應用啟動腳本bat和sh的方法
1. maven插件介紹
springboot應用通過maven插件appassembler-maven-plugi生成啟動腳本bat和sh。根據(jù)官網(wǎng)介紹,這個插件主要用于生成啟動 java應用程序的腳本,能將項目依賴jar能夠打包目錄中,并且它們加入啟動腳本類路徑中。
主要命令
appassembler:assemble 打包項目并且配置bin 啟動腳本,可以理解為使用類似spring-boot-maven-plugin打包出來項目,可以通過java -jar 方式啟動項目,但是不支持stop、satus、restart這些操作,比較原始。
appassembler:create-repository 創(chuàng)建一個 appassembler 存儲庫,就是將工程打成jar
appassembler:generate-daemons 生成基于 JSW 的守護進程包裝器,大多數(shù)人都是使用這個。
參考文檔
appassembler-maven-plugin 插件為 SpringBoot 項目生成啟動腳本
http://www.dbjr.com.cn/article/191442.htm
2. 生成啟動腳本
2.1 創(chuàng)建springboot應用
2.2 創(chuàng)建啟動測試類
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插件自動生成java項目啟動腳本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共同決定將項目用的的所有jar包復制到lib目錄下 --> <repositoryLayout>flat</repositoryLayout> <!--從哪里copy配置文件--> <configurationSourceDirectory>src/main/resources</configurationSourceDirectory> <includeConfigurationDirectoryInClasspath>true</includeConfigurationDirectoryInClasspath> <!--是否copy配置文件--> <copyConfigurationDirectory>true</copyConfigurationDirectory> <!--生成的項目的目錄位置,這里的client是項目的名稱,你可以根據(jù)你的需要自己隨便命名--> <assembleDirectory>${project.build.directory}/client</assembleDirectory> <!--配置文件存放在conf目錄路徑--> <configurationDirectory>conf</configurationDirectory> <!-- 打包的jar,以及maven依賴的jar放到這個目錄里面 --> <repositoryName>lib</repositoryName> <!-- 可執(zhí)行腳本的目錄 --> <binFolder>bin</binFolder> <!-- 生成linux, windows兩種平臺的執(zhí)行腳本 --> <platforms> <platform>windows</platform> <platform>unix</platform> </platforms> <!-- 針對不同平臺生成不同類型的啟動腳本 --> <binFileExtensions> <unix>.sh</unix> <windows>.bat</windows> </binFileExtensions> <!--編碼,日志--> <encoding>UTF-8</encoding> <logsDirectory>logs</logsDirectory> <tempDirectory>tmp</tempDirectory> <!--java啟動參數(shù)--> <extraJvmArguments>-Xms128m</extraJvmArguments> <programs> <program> <!--指定主類,腳本名。會生成shell/bat兩種類型,也可用platforms指定運行平臺--> <mainClass>com.zrj.maven.assembly.demo.MavenAssemblyDemoApplication</mainClass> <!-- 生成的腳本文件的名稱,比如start.sh,你也可以根據(jù)你的需要命名成其他名字 --> <name>start</name> </program> </programs> </configuration> </plugin> </plugins> </build> </project>
3. 測試驗證
3.1 執(zhí)行命令
執(zhí)行命令或者使用idea
執(zhí)行命令:maven install
idea:maven-lifecycle依次執(zhí)行clean,install
3.2 生成腳本
|—— target | |—— client | | |—— bin | | | |—— start.sh # linux平臺下的啟動腳本 | | | |—— start.bat # windows平臺下的啟動腳本 | |—— conf | | |—— application.properties # 項目配置文件 | |—— lib | | |—— 各種依賴jar包 | |—— logs | |—— tmp
3.3 啟動腳本驗證
./start.bat 或者./start.sh
瀏覽器訪問:http://localhost:8080/
刷新頁面:1668682483758:Hello World!
到此這篇關于maven assembly打包生成Java應用啟動腳本bat和sh的文章就介紹到這了,更多相關maven assembly打包生成啟動腳本bat和sh內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!
相關文章
Java編程Socket實現(xiàn)多個客戶端連接同一個服務端代碼
這篇文章主要介紹了Java編程Socket實現(xiàn)多個客戶端連接同一個服務端代碼,具有一定參考價值,需要的朋友可以了解下。2017-11-11Java中使用輾轉(zhuǎn)相除法求最大公約數(shù)
這篇文章主要介紹了Java中使用輾轉(zhuǎn)相除法求最大公約數(shù),本文直接給出代碼實例,需要的朋友可以參考下2015-05-05java實現(xiàn)批量導入.csv文件到mysql數(shù)據(jù)庫
這篇文章主要為大家詳細介紹了java實現(xiàn)批量導入.csv文件到mysql數(shù)據(jù)庫,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下2019-08-08淺談java中String StringBuffer StringBuilder的區(qū)別
下面小編就為大家?guī)硪黄獪\談java中String StringBuffer StringBuilder的區(qū)別。小編覺得挺不錯的,現(xiàn)在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧2016-06-06springboot程序啟動慢-未配置hostname的解決
這篇文章主要介紹了springboot程序啟動慢-未配置hostname的解決方案,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教2021-08-08