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>
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37
  • 38
  • 39
  • 40
  • 41



- 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 &
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6

這裏需要三個文件,分別是 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
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7



replace.sh

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



startup.sh

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



-0x04 結束 

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


-0x05 常見問題

如果在執行sh腳本時出現promission denied  是因爲jenkins 執行權限不夠

  • 配置文件/etc/sysconfig/jenkins
# 打開配置文件
vim /etc/sysconfig/jenkins
# 修改用戶爲root
JENKINS_USER="root"     #該行涉及到jenkins 執行sh腳本時的權限問題

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章