1. 程式人生 > >Jenkins 構建maven工程打成jar包並執行

Jenkins 構建maven工程打成jar包並執行

Jenkins 構建maven工程打成jar包並執行

- 0x00 前言
繼續上午的坑爹部署後,打算將需要執行的jar包用Jenkins構建並執行。

- 0x01 思路
1. 使用maven的maven-shade-plugin外掛,把maven專案的各種依賴jar包統統打包,生成.jar檔案。
2. 通過Jenkins持續整合構建專案。
3. 停止之前執行的jar包。
4. Jenkins構建後生成的jar包替換掉到我指定的資料夾中的舊的jar包。
5. 執行jar包。

- 0x02 maven打包外掛
在pom.xml中新增如下配置

<plugin>
    <groupId
>
org.apache.maven.plugins</groupId> <artifactId>maven-shade-plugin</artifactId> <version>2.4.1</version> <configuration> <createDependencyReducedPom>false</createDependencyReducedPom> </configuration> <executions> <execution
>
<phase>package</phase> <goals> <goal>shade</goal> </goals> <configuration> <filters> <filter> <artifact>*:*</artifact
>
<excludes> <exclude>META-INF/*.SF</exclude> <exclude>META-INF/*.DSA</exclude> <exclude>META-INF/*.RSA</exclude> </excludes> </filter> </filters> <transformers> <transformer implementation="org.apache.maven.plugins.shade.resource.ManifestResourceTransformer"> <mainClass>com.tooldin.main.ActiveMQMain</mainClass> </transformer> <transformer implementation="org.apache.maven.plugins.shade.resource.AppendingTransformer"> <resource>META-INF/spring.handlers</resource> </transformer> <transformer implementation="org.apache.maven.plugins.shade.resource.AppendingTransformer"> <resource>META-INF/spring.schemas</resource> </transformer> </transformers> </configuration> </execution> </executions> </plugin>



- 0x03 配置Jenkins
這裡寫圖片描述
選擇構建一個自由風格的軟體專案就好,什麼Subversion啊,這些根據需求自己設定,主要是構建步驟。


這裡寫圖片描述

首先是Invoke top-level Maven targets
其次是Execute Shell,我這伺服器用的ubuntu,所以Execute Shell


Command部分

#!/bin/bash
cd /home/deploy-mq/
./stop.sh
./replace.sh
echo "Execute shell Finish"
BUILD_ID=dontKillMe nohup /home/deploy-mq/startup.sh &

這裡需要三個檔案,分別是 stop.sh, replace.sh, startup.sh
放在/home/deploy-mq目錄中


stop.sh

echo "Stopping tooldin-mq"
pid=`ps -ef | grep tooldin-mq.jar | grep -v grep | awk '{print $2}'`
if [ -n "$pid" ]
then
   echo "kill -9 的pid:" $pid
   kill -9 $pid
fi



replace.sh

cp /var/lib/jenkins/workspace/tooldin-mq/target/tooldin-mq.jar /home/deploy-mq



startup.sh

java -jar /home/deploy-mq/tooldin-mq.jar



-0x04 結束
經過一細節的配置, 再嘗試構建, Jenkins輸出了 Finished: SUCCESS, 並亮起了小太陽, 雞凍。自此,maven工程就打成jar包,通過Jenkins構建並部署執行就成功啦!