Jboot使用appassembler-maven-plugin插件生成啟動腳本


appassembler-maven-plugin介紹:

使用appassembler-maven-plugin插件可自動生成跨平台的啟動腳本,可省去手工寫腳本的麻煩,而且還可以生成jsw的后台運行程序。

插件官網:http://www.mojohaus.org/appassembler/appassembler-maven-plugin/

官網詳細介紹了該插件的用法。

實戰:

最近項目用到了Jboot框架,如何在Jboot框架中應用appassembler-maven-plugin插件生成啟動腳本,是本文要寫的。

1 生成可執行啟動腳本

1.1 直接在pom.xml文件中加入插件配置

 1 <build>
 2     <plugins>
 3 
 4         <plugin>
 5             <groupId>org.apache.maven.plugins</groupId>
 6             <!-- Apache Maven編譯器插件 -->
 7             <artifactId>maven-compiler-plugin</artifactId>
 8             <configuration>
 9                 <source>1.8</source>
10                 <target>1.8</target>
11                 <encoding>UTF-8</encoding>
12                 <!-- 必須添加compilerArgument配置,才能使用JFinal的Controller方法帶參數的功能 -->
13                 <compilerArgument>-parameters</compilerArgument>
14             </configuration>
15         </plugin>
16 
17         <plugin>
18             <groupId>org.codehaus.mojo</groupId>
19             <artifactId>appassembler-maven-plugin</artifactId>
20             <version>1.10</version>
21             <configuration>
22                 <!-- 文件生成的根目錄 -->
23                 <assembleDirectory>${project.build.directory}/app</assembleDirectory>
24                 <!-- 打包的jar,以及maven依賴的jar放到這個目錄里面 -->
25                 <repositoryName>lib</repositoryName>
26                 <!-- 可執行腳本的目錄 -->
27                 <binFolder>bin</binFolder>
28                 <!-- 配置文件的目標目錄 -->
29                 <configurationDirectory>webRoot</configurationDirectory>
30                 <!-- 拷貝配置文件到上面的目錄中 -->
31                 <copyConfigurationDirectory>true</copyConfigurationDirectory>
32                 <!-- 從哪里拷貝配置文件 (默認src/main/config) -->
33                 <configurationSourceDirectory>src/main/resources</configurationSourceDirectory>
34                 <!-- lib目錄中jar的存放規則,默認是${groupId}/${artifactId}的目錄格式,flat表示直接把jar放到lib目錄 -->
35                 <repositoryLayout>flat</repositoryLayout>
36                 <encoding>UTF-8</encoding>
37                 <logsDirectory>logs</logsDirectory>
38                 <tempDirectory>tmp</tempDirectory>
39 
40                 <programs>
41                     <!-- 程序打包:mvn package appassembler:assemble -->
42                     <program>
43                         <!-- 生成的腳本文件的名稱,比如start.sh,你也可以根據你的需要命名成其他名字 -->
44                         <id>jboot</id>
45                         <mainClass>io.jboot.Jboot</mainClass>
46                         <!-- 生成linux, windows兩種平台的執行腳本 -->
47                         <platforms>
48                             <platform>windows</platform>
49                             <platform>unix</platform>
50                         </platforms>
51                     </program>
52                 </programs>
53 
54             </configuration>
55         </plugin>
56 
57     </plugins>
58 </build>

 1.2 在終端中執行:mvn package appassembler:assemble

程序打包完成

在項目的target-->app-->bin文件下可找到新生成腳本文件,無文件后綴的是linux可執行的腳本文件,jboot.bat為windows下可執行腳本文件。

1.3 可執行腳本測試

1.3.1 linux下測試

將 target 整個文件拷貝到 linux 文件目錄下

通過終端進入app/bin目錄下,並賦予 jboot 文件可執行權限,然后執行 ./jboot 命令,可以看到項目啟動成功。

在瀏覽器中訪問:http://192.168.154.216:8080/ 可以看到項目訪問正常。

2 生成后台服務程序

2.1 在生成可執行啟動腳本pom.xml文件的<configuration>下繼續添加如下內容

 1 <daemons>
 2     <!-- 后台程序打包:mvn clean package appassembler:generate-daemons -->
 3     <daemon>
 4         <id>jboot</id>
 5         <mainClass>io.jboot.Jboot</mainClass>
 6         <platforms>
 7             <platform>jsw</platform>
 8         </platforms>
 9         <generatorConfigurations>
10             <generatorConfiguration>
11                 <generator>jsw</generator>
12                 <includes>
13                     <include>linux-x86-32</include>
14                     <include>linux-x86-64</include>
15                     <include>macosx-universal-32</include>
16                     <include>macosx-universal-64</include>
17                     <include>windows-x86-32</include>
18                     <include>windows-x86-64</include>
19                 </includes>
20                 <configuration>
21                     <property>
22                         <name>configuration.directory.in.classpath.first</name>
23                         <value>webRoot</value>
24                     </property>
25                     <property>
26                         <name>wrapper.ping.timeout</name>
27                         <value>120</value>
28                     </property>
29                     <property>
30                         <name>set.default.REPO_DIR</name>
31                         <value>lib</value>
32                     </property>
33                     <property>
34                         <name>wrapper.logfile</name>
35                         <value>logs/wrapper.log</value>
36                     </property>
37                 </configuration>
38             </generatorConfiguration>
39         </generatorConfigurations>
40     </daemon>
41 </daemons>

2.2 在終端中執行:mvn clean package appassembler:generate-daemons 稍后即打包完成。

在項目的target-->generated-resources-->appassembler-->jsw-->jboot-->bin文件下可找到新生成的腳本文件,無后綴jboot文件的是linux可執行的腳本文件,jboot.bat為windows下可執行腳本文件。

2.3 后台服務程序腳本測試

2.3.1 windows下測試

以管理員身份進入DOS操作界面,進入腳本文件所在目錄,執行jboot.bat命令,展示出腳本用法列表

Usage: jboot.bat { console : start : pause : resume : stop : restart : install : remove : status }

執行 jboot.bat start 啟動項目

在瀏覽器中輸入:http://localhost:8080/ 可以看到項目啟動成功,也可以操作 jboot.bat status 查看運行狀態、jboot.bat stop 停止項目運行

2.3.2 linux下測試

同樣將 target 整個文件拷貝到 linux 文件目錄下,然后在終端進入腳本文件所在位置

賦予jboot、wrapper-linux-x86-64可執行權限,執行 ./jboot 命令可以顯示腳本用法列表

接着執行 ./jboot start 啟動項目,執行 ./jboot status 查看運行狀態

在瀏覽器中輸入:http://192.168.154.216:8080/ 可以看到項目訪問成功,同樣可以使用 ./jboot stop 終止項目運行

注:

1、在終端執行生成后台服務程序的命令后,會將前面生成可執行啟動腳本命令生成的app文件刪掉,如果還想要可執行啟動腳本,在終端再執行一遍 mvn package appassembler:assemble 即可,然后將新的target文件拷貝到對應目錄下,可執行啟動腳本和后台服務程序腳本都會存在。

2、如果pom文件中增加了新的依賴,或者減少了依賴,則需要重新使用命令打包,否則新加入的jar包無法引入到項目的lib下,命令會把每個jar包都加入到lib下。

至此,Jboot使用appassembler-maven-plugin插件生成啟動腳本的相關操作結束。

參考:

使用appassembler-maven-plugin插件生成啟動腳本

使用appassembler插件生成啟動腳本

用Maven自動生成帶有sh和bat啟動腳本的java應用

Jboot-項目構建


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM