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插件生成啟動腳本
