【高度な運用保守知識】Mavenプロジェクトのコンパイルが理解できる記事です!(Jenkins の統合 + Java プロジェクトのパッケージ化)

この記事では、Maven を使用したプロジェクトのコンパイルについて紹介します。Maven は、開発者に完全なライフ サイクル フレームワークを提供するプロジェクト管理および包括的なツールです。開発チームはプロジェクトのインフラストラクチャ構築を自動的に完了できます。Maven は標準のディレクトリ構造を使用し、デフォルトのビルド ライフサイクルを使用します。 。Apache のオープンソース プロジェクトであり、主に JAVA プラットフォームの構築、依存関係管理、プロジェクト管理を行います。

Maven のインストールとデプロイメント

1. 公式 Web サイトまたはミラー ソースから Maven 3 インストール パッケージをダウンロードします。公式
Web サイト: http://maven.apache.org/download.cgi
清華ミラー: https://mirrors.tuna.tsinghua.edu.cn/apache /メイブン/

2.
記事の最後にある次のバージョンの Maven のダウンロード リンクをインストールします。

[root@Jenkins ~]# tar xf apache-maven-3.3.9-bin.tar.gz 
[root@Jenkins ~]# mv apache-maven-3.3.9 /usr/local/
[root@Jenkins ~]# ln -s /usr/local/apache-maven-3.3.9/ /usr/local/maven
[root@Jenkins ~]# /usr/local/maven/bin/mvn -v
Apache Maven 3.3.9 (bb52d8502b132ec0a5a3f4c09453c07478323dc5; 2015-11-11T00:41:47+08:00)
Maven home: /usr/local/maven
Java version: 1.8.0_181, vendor: Oracle Corporation
Java home: /usr/java/jdk1.8.0_181-amd64/jre
Default locale: en_US, platform encoding: UTF-8
OS name: "linux", version: "3.10.0-1160.el7.x86_64", arch: "amd64", family: "unix"

3. /etc/profile ファイルを編集し、最後に PATH 変数を追加します。

[root@Jenkins ~]# cat /etc/profile
...
export PATH=/usr/local/apache-maven-3.3.9/bin/:$PATH
[root@Jenkins ~]# source /etc/profile
[root@Jenkins ~]# mvn -v
Apache Maven 3.3.9 (bb52d8502b132ec0a5a3f4c09453c07478323dc5; 2015-11-11T00:41:47+08:00)
Maven home: /usr/local/apache-maven-3.3.9
Java version: 1.8.0_181, vendor: Oracle Corporation
Java home: /usr/java/jdk1.8.0_181-amd64/jre
Default locale: en_US, platform encoding: UTF-8
OS name: "linux", version: "3.10.0-1160.el7.x86_64", arch: "amd64", family: "unix"

Maven の一般的なコマンド

mvn -v  查看版本号
validate(验证):  验证项目正确,并且所有必要信息可用。
compile(编译): 编译项目源码
test(测试): 使用合适的单元测试框架测试编译后的源码。
package(打包): 源码编译之后,使用合适的格式(例如JAR格式)对编译后的源码进行打包。
integration-test(集成测试): 如果有需要,把包处理并部署到可以运行集成测试的环境中去。
verify(验证): 进行各种测试来验证包是否有效并且符合质量标准。
install(安装): 把包安装到本地仓库,使该包可以作为其他本地项目的依赖。
deploy(部署): 在集成或发布环境中完成,将最终软件包复制到远程存储库,以与其他开发人员和项目共享。
mvn clean (清除) : 清除上次编译的结果
mvn package -Dmaven.test.skip=true 跳过测试用例
mvn package      #会去maven的中央仓库去下载需要的依赖包和插件到.m2目录下

Jenkins は Maven を統合します

要件: シンプルな Java プロジェクト パッケージ hello-world.tar.gz をアップロードして解凍します。解凍後、コードを gitlab リモート ウェアハウスにプッシュし、トリガーを通じて Jenkins イベントをトリガーします。Jenkins はコードを Jenkins サーバーにプルし、Maven を使用します。パッケージ化コマンドを実行します。(プロジェクト パッケージのダウンロード リンクは記事の最後にあります)

1. Jenkins プロジェクトを作成する

1.コードをgitlabにアップロードします

プロジェクト オブジェクト モデルは、プロジェクト オブジェクト モデルであり、xml 形式で保存された pom.xml ファイルです。このファイルは、ソース コード、構成ファイル、開発者の情報と役割、問題追跡システム、組織情報、プロジェクトの承認、プロジェクト URL、プロジェクトの管理に使用されます。依存関係などについては、このファイルは開発側で管理されるため、運用保守担当者は意識する必要はありません。

[root@Gitlab ~]# rz -E
rz waiting to receive.
[root@Gitlab ~]# tar xf hello-world-war.tar.gz 
[root@Gitlab ~]# cd hello-world-war/
[root@Gitlab hello-world-war]# ls
dist  pom.xml  README.md  src
[root@Gitlab hello-world-war]# git remote 	# 查看与远程仓库的连接
origin
[root@Gitlab hello-world-war]# git remote remove origin  # 删除默认连接
[root@Gitlab hello-world-war]# git remote
[root@Gitlab hello-world-war]# 

2. gitlab で新しいプロジェクトを作成し、ここにコードを送信します

ここに画像の説明を挿入します
3. このプロジェクトに接続されている倉庫情報を追加し、コードをリモート倉庫にプッシュします

[root@Gitlab hello-world-war]# git remote add origin [email protected]:root/java.git
[root@Gitlab hello-world-war]# git remote -v
origin	[email protected]:root/java.git (fetch)
origin	[email protected]:root/java.git (push)
[root@Gitlab hello-world-war]# git push -u origin master
Counting objects: 37, done.
Delta compression using up to 2 threads.
Compressing objects: 100% (24/24), done.
Writing objects: 100% (37/37), 4.48 KiB | 0 bytes/s, done.
Total 37 (delta 8), reused 0 (delta 0)
To [email protected]:root/java.git
 * [new branch]      master -> master
Branch master set up to track remote branch master from origin.

4. gitlab Web インターフェイスを更新し、プロジェクト コード ファイルを表示し、プロジェクト アドレスを再度コピーします。

ここに画像の説明を挿入します

5. Jenkins で新しい Maven プロジェクトを作成して、gitlab コードをプルします

フリースタイルプロジェクトと比較して、このプロジェクトはコンパイルプロセスが 1 つ多くあります。

ここに画像の説明を挿入します

プロジェクトの構成をいくつか行う

ここに画像の説明を挿入します

ソースコードソースを追加

ここに画像の説明を挿入します

ビルド時にエラー メッセージが表示され、Maven で設定する必要があるものがいくつか表示されます。青い位置をクリックし、右クリックして新しいタブを開きます。

ここに画像の説明を挿入します

新しいタブ ページを下にスクロールして、Maven ホーム ディレクトリを追加します。

ここに画像の説明を挿入します

この時点では、ビルド部門は更新されていないため、依然としてエラーを表示します。問題はありません。目標とオプションの内容を入力し、最初にパッケージをクリアしてからパッケージをクリーンアップします。

ここに画像の説明を挿入します

終了して再度入力すると、エラーは表示されません。

ここに画像の説明を挿入します

2. 手動によるプロジェクトの実行

まずプロジェクトのデプロイメントを手動で実行し、Jenkins にプロジェクトを手動でアップロードし、Maven を介してプロジェクトをパッケージ化して、コードを Web サーバーにデプロイします。
1. プロジェクトを手動で Jenkins サーバーにアップロードします

[root@Jenkins ~]# cd hello-world-war/
[root@Jenkins hello-world-war]# ls
dist  pom.xml  README.md  src
[root@Jenkins hello-world-war]# mvn package	# 打包项目
...
[INFO] ------------------------------------------------------------------------
[INFO] BUILD SUCCESS
[INFO] ------------------------------------------------------------------------
[INFO] Total time: 04:41 min
[INFO] Finished at: 2023-08-20T18:18:48+08:00
[INFO] Final Memory: 14M/261M
[INFO] ------------------------------------------------------------------------

2. パッケージ化された war パッケージを Web 上の指定された場所にプッシュします
。プロジェクトが正常にパッケージ化されると、追加のターゲット ディレクトリが存在し、そのディレクトリの下に hello-world-war-1.0.0.war があることがわかります ( cleanを実行すると対象ディレクトリがクリアされます)

[root@Jenkins hello-world-war]# ls
dist  pom.xml  README.md  src  target
[root@Jenkins hello-world-war]# ls target/
hello-world-war-1.0.0      maven-archiver
hello-world-war-1.0.0.war

3. war パッケージを Web サーバーの Tomcat コード ディレクトリにプッシュします。

[root@Web01 ~]# ls /soft/tomcat/webapps/ROOT/
asf-logo-wide.svg  bg-nav.png    index.jsp          tomcat.svg
bg-button.png      bg-upper.png  RELEASE-NOTES.txt  WEB-INF
bg-middle.png      favicon.ico   tomcat.css
[root@Web01 ~]# rm -rf /soft/tomcat/webapps/ROOT/*

[root@Jenkins hello-world-war]# scp target/hello-world-war-1.0.0.war 10.0.0.7:/soft/tomcat/webapps/ROOT/
hello-world-war-1.0.0.war    100% 2402     1.3MB/s   00:00 

[root@Web01 ~]# ls /soft/tomcat/webapps/ROOT/
hello-world-war-1.0.0.war
[root@Web01 ~]# cd /soft/tomcat/webapps/ROOT/
[root@Web01 ROOT]# unzip hello-world-war-1.0.0.war 
Archive:  hello-world-war-1.0.0.war
   creating: META-INF/
  inflating: META-INF/MANIFEST.MF    
   creating: WEB-INF/
   creating: WEB-INF/classes/
  inflating: WEB-INF/web.xml         
  inflating: index.jsp               
   creating: META-INF/maven/
   creating: META-INF/maven/com.efsavage/
   creating: META-INF/maven/com.efsavage/hello-world-war/
  inflating: META-INF/maven/com.efsavage/hello-world-war/pom.xml  
  inflating: META-INF/maven/com.efsavage/hello-world-war/pom.properties
[root@Web01 ROOT]# ls
hello-world-war-1.0.0.war  index.jsp  META-INF  WEB-INF

4. ブラウザは 10.0.0.7:8080 にアクセスし、インターフェイスが正常に表示されます。

ここに画像の説明を挿入します

3. ビルドステップを書く

コードを gitlab に送信し、Jenkins イベントを自動的にトリガーするビルド ステップを作成します。Jenkins が Maven を介してパッケージ化された後、コードは Web サーバーにデプロイされます。

上記の Jenkins プロジェクトを作成しましたが、ビルド手順はまだ記述していません。clean と package を記述しただけです。この時点で、Build Now をクリックすると、ターゲット ディレクトリが生成されます。つまり、コードは gitlab からプルされますそして、Jenkins.maven コンパイル プロセス上で実行されます。

[root@Jenkins ~]# ls /var/lib/jenkins/workspace/
freestyle-job  git_version  java-job
[root@Jenkins ~]# ls /var/lib/jenkins/workspace/java-job/
dist  pom.xml  README.md  src  target

しかし、これだけでは十分ではなく、プロジェクトをビルドするときに達成したいのは、Web サーバーに自動的にデプロイすることなので、ビルド ステップを追加します。

1. 構築ステップを追加する

ここでは、コードを直接記述することも、コードをスクリプトに配置して実行スクリプトをここに記述することも選択できます。

ssh 10.0.0.7 "cd /soft/apache-tomcat-9.0.73/webapps/ && mkdir java_$BUILD_ID"
scp target/*.war 10.0.0.7:/soft/apache-tomcat-9.0.73/webapps/java_$BUILD_ID
ssh 10.0.0.7 "cd /soft/apache-tomcat-9.0.73/webapps/java_$BUILD_ID && unzip *.war && rm -rf *.war"
ssh 10.0.0.7 "cd /soft/apache-tomcat-9.0.73/webapps/ && rm -rf ROOT && ln -s java_$BUILD_ID ROOT"
ssh 10.0.0.7 "/soft/tomcat/bin/shutdown.sh && /soft/tomcat/bin/startup.sh"

ここに画像の説明を挿入します
2. 「今すぐ構築」をクリックします

[root@Web01 webapps]# ll
total 4
drwxr-x--- 16 root root 4096 Aug 20 19:18 docs
drwxr-x---  7 root root   99 Aug 20 19:18 examples
drwxr-x---  6 root root   79 Aug 20 19:18 host-manager
drwxr-xr-x  2 root root   39 Aug 20 19:34 java_2
drwxr-xr-x  4 root root   54 Aug 20 19:37 java_3
drwxr-x---  6 root root  114 Aug 20 19:18 manager
lrwxrwxrwx  1 root root    6 Aug 20 19:37 ROOT -> java_3
[root@Web01 webapps]# ls ROOT/
index.jsp  META-INF  WEB-INF

ブラウザアクセスも正常にアクセスできますが、現時点ではv4.0であることに注意してください。

ここに画像の説明を挿入します
3. ビルドトリガーを構成する

フックアドレスをコピーする

ここに画像の説明を挿入します
構成を確認し、ブランチを記入します

ここに画像の説明を挿入します
トークンの生成

ここに画像の説明を挿入します

フックの URL と生成されたトークンを gitlab プロジェクトの設定にある統合ページにコピーし、「Web フックの追加」をクリックします。

ここに画像の説明を挿入します

4. gitlab でコードを変更し、テストのために Jenkins に送信します。

[root@Gitlab hello-world-war]# cat src/main/webapp/index.jsp
<html>
<head>
<title>Hello World!</title>
</head>
<body>
	<h1>Hello World! v5.0</h1>
	<p>
		It is now
		<%= new java.util.Date() %></p>
	<p>
		You are coming from 
		<%= request.getRemoteAddr()  %></p>
</body>
[root@Gitlab hello-world-war]# git commit -am "v2.0"
[master 8541df7] v2.0
 1 file changed, 1 insertion(+), 1 deletion(-)
[root@Gitlab hello-world-war]# git push -u origin master
Counting objects: 11, done.
Delta compression using up to 2 threads.
Compressing objects: 100% (4/4), done.
Writing objects: 100% (6/6), 433 bytes | 0 bytes/s, done.
Total 6 (delta 2), reused 0 (delta 0)
To [email protected]:root/java.git
   b0b92ed..8541df7  master -> master
Branch master set up to track remote branch master from origin.

Jenkins イベントが自動的にトリガーされ、Jenkins は Maven を使用してコードをコンパイルし、Web サーバーにプッシュする操作を完了します。この時点でブラウザーを更新すると、バージョンが変更されていることがわかります。

ここに画像の説明を挿入します


Maven インストール パッケージのダウンロード リンク: https://pan.baidu.com/s/1HPUaEHzaqLV4fk9VvySAew?pwd=im0w
Java プロジェクト パッケージのダウンロード リンク: https://pan.baidu.com/s/1Poll1N7R1O2jz7_RRkAjXg?pwd=wja510
歳の koten です。長年にわたる運用とメンテナンスの経験、今後も運用とメンテナンスのヒントを共有していきます。読んで注目していただきありがとうございます。

おすすめ

転載: blog.csdn.net/qq_37510195/article/details/132393403