[精讚] [會員登入]
1924

【Maven】用Maven來託管Wildfly/jBoss的部屬(deploy)、解部屬(undeploy)

極簡版,給未來想要抄作業的小編自己,完整的一切設定檔,可以依照個人需求作增刪。

分享此文連結 //n.sfs.tw/15330

分享連結 【Maven】用Maven來託管Wildfly/jBoss的部屬(deploy)、解部屬(undeploy)@小編過路君子
(文章歡迎轉載,務必尊重版權註明連結來源)
2023-03-25 21:38:54 最後編修
2021-08-06 20:46:15 By 過路君子
 

大家好,這裡是好不容易弄好這個的小編過路君子

基本上沒有什麼中文說明文件可以看,生咬了一大堆的英文文檔,不想再來一次了

 

如果各位只是想要單純將檔案打包成 Jar檔或是 War檔的話可以參考下方的文章。

War 【Maven】如何創建一個簡單可部屬的WAR檔@小編過路君子
Jar 【Maven】如何創建一個簡單可執行的JAR檔@小編過路君子

 

那小編在這裡附上小編所使用軟體的版本資訊。

版本資訊:

Maven: 3.8.1
Wildfly: 24.0.1.Final
WildFly Maven Plugin: 2.0.2.Final

使用管理的軟體就是 WildFly Maven Plugin,相關版本以及 dependency的資訊頁面,點擊這裡前往

 

為了接下來的解釋方便,以下統一將 Wildfly/jBoss都稱為 Wildfly。

在Maven上託管Wildfly,有兩種狀況:

1. 由 Maven來strat, shutdown,換言之,就是透過 mvn wildfly:start或 mvn wildfly:shutdown來啟動或停止 Wildfly
2. 本來就跑在伺服器上的 Wildfly,換言之,就是透過 systemctl start wildfly或 systemctl stop wildfly來啟動或是停止 Wildfly

本文章所針對的狀況是狀況二,如果各位是採用狀況一,那...小編也只能跟你說一聲不好意思了。

 

在正式進到 Maven設定前,需要各位先確認自己的 Wildfly正在運作中,如下圖:

(所有圖片點擊都可以放大、變高清)

 

至於 Wildfly如何安裝、設置在這裡不是重點,所以小編在這就稍稍提一下就帶過了。

小編在將 Wildfly交給 Maven託管前,就已經將其設定全部結束了,包括綁定 Public IP、防火牆規則設置或是 Wildfly啟動規則設置。

所以如果在尚未交給 Maven託管就無法透過瀏覽器來訪問,就算現在交給 Maven託管也不會突然就可以被瀏覽器來訪問,在這裡只是將「部屬」和「取消部屬」的權利交給了 Maven,並不會對 Wildfly的任何基本設定做變動。

 

那接下來就進到了 Maven設置了,第一步,當然是先將 Maven的專案結構給先全部建立好,整體結構如下:

Mavan專案資料夾結構
Basic-Setting(專案目錄)
|-- pom.xml
|--\ src
|    |
|    |--\ main
|        |
|        |--\ resources
|        |--\ webapp
|            |
|            |-- index.html
|            |--\ WEB-INF
|                |
|                |-- web.xml
|                |-- jboss-web.xml

其中跟 index.html就是當其他人連線進來時第一個會看到的頁面,其他三個 .xml則是非常重要的設定檔。

 

index的"Hello World"簡單範例

<!DOCTYPE html>
<html>
    <head>
        <title>Hello World!</title>
    </head>
    <body>
        <p>Hello World!</p>
    </body>
</html>

 

pom.xml的範例設定

<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
     xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">;
<modelVersion>4.0.0</modelVersion>

	<groupId>passing.editor.guild245</groupId>
	<artifactId>pixiJS-web</artifactId>
	<version>1.0.0</version>

	<name>pixiJS-web Maven Webapp</name>
	<url>http://maven.apache.org</url>

	<properties>
		<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
		<maven.compiler.source>1.8</maven.compiler.source>
		<maven.compiler.target>1.8</maven.compiler.target>
	</properties>

	<repositories>
		<repository>
			<id>clojars.org</id>
			<url>https://repo.clojars.org</url>
		</repository>
	</repositories>

	<dependencies>
		<dependency>
			<groupId>junit</groupId>
			<artifactId>junit</artifactId>
			<version>4.11</version>
			<scope>test</scope>
		</dependency>
		<dependency>
			<groupId>org.apache.maven.plugins</groupId>
			<artifactId>maven-gpg-plugin</artifactId>
			<version>3.0.1</version>
		</dependency>
	</dependencies>

	<packaging>war</packaging>
  
	<build>
		<pluginManagement>
			<plugins>
				<plugin>
					<groupId>org.wildfly.plugins</groupId>
					<artifactId>wildfly-maven-plugin</artifactId>
					<version>2.0.2.Final</version>
					<configuration>
						<jbossHome>/opt/wildfly</jbossHome>
						<hostname>127.0.0.1</hostname>
						<port>9990</port>
						<username>username</username>
						<password>password</password>
					</configuration>
				</plugin>
				<plugin>
					<groupId>org.apache.maven.plugins</groupId>
					<artifactId>maven-war-plugin</artifactId>
					<version>3.3.1</version>
				</plugin>
				<plugin>
					<artifactId>maven-clean-plugin</artifactId>
					<version>3.1.0</version>
				</plugin>
				<plugin>
					<artifactId>maven-resources-plugin</artifactId>
					<version>3.0.2</version>
				</plugin>
				<plugin>
					<artifactId>maven-surefire-plugin</artifactId>
					<version>2.22.1</version>
				</plugin>
				<plugin>
					<artifactId>maven-install-plugin</artifactId>
					<version>2.5.2</version>
				</plugin>
				<plugin>
					<artifactId>maven-deploy-plugin</artifactId>
					<version>2.8.2</version>
				</plugin>
				<plugin>
					<artifactId>maven-site-plugin</artifactId>
					<version>3.7.1</version>
				</plugin>
				<plugin>
					<artifactId>maven-project-info-reports-plugin</artifactId>
					<version>3.0.0</version>
				</plugin>
			</plugins>
		</pluginManagement>
	</build>
</project>

 

WildFly Maven Plugin並不是要寫在 dependencies裡,而是要寫在 pluginManagement裡,如果寫在 dependencies在執行的時候就會報錯,這點要稍稍注意一下。

或是只將下列的 plugin寫入現有的 pom.xml裡面

<plugin>
    <groupId>org.wildfly.plugins</groupId>
    <artifactId>wildfly-maven-plugin</artifactId>
    <version>2.0.2.Final</version>
    <configuration>
		<port>9990</port>
		<username>username</username>
		<password>password</password>
		<hostname>127.0.0.1</hostname>
		<jbossHome>/opt/wildfly</jbossHome>
    </configuration>
</plugin>

groupId, artifactId, version基本上都不需要更改,就只有 configuration裡要請各位特別注意並依照目前個人狀態來做修改。

port:
Wildfly的管理界面所在的 port,預設聆聽的 port為9990,如果有各位有更改,那這裡也要更改。

username, password:
Wildfly的管理員帳號密碼,這兩項可有可無,如果沒有設定,則每次 deploy或 undeploy的時候都要輸入一次帳號密碼。

hostname:
IP位置,如果 Wildfly有綁定 Public IP的話,這裡就填入那個 IP就可以了,例如:8.8.8.8。

jbossHome:
Wildfly的目錄,也就是進去可以找到 bin目錄的位置,建議填寫絕對位置,因為根據狀況不同,相對開始點也不太一樣。

這邊有一個需要注意的點,也就是如果各位在 configuration看到了 version的設置,那就要特別警覺了,例如:<version>24.0.1.Final</version>

一個 plugin竟然出現了兩個 version是怎麼回事?!

第一個 version是 WildFly Maven Plugin這個的版本沒有問題,而第二個 version則是代表 Wildfly所使用的版本,也就是說......Maven事實上是有能力自我下載、啟動一個 Wildfly,這就跟狀況一類似了,換言之,狀況一和狀況二就是差在有沒有這行。

如果各位很不幸地看到這行,那接下來的設定檔有可能沒法用,不好意思了。

 

web.xml的設定範例

<web-app xmlns="http://xmlns.jcp.org/xml/ns/javaee"
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee
         http://xmlns.jcp.org/xml/ns/javaee/web-app_3_1.xsd"
		 version="3.1">

	<welcome-file-list>
		<welcome-file>index.html</welcome-file>
	</welcome-file-list>

    <servlet-mapping>
        <servlet-name>register</servlet-name>
        <url-pattern>/register/*</url-pattern>
    </servlet-mapping>
</web-app>

如果首頁不喜歡叫 index.html或是首頁是 index.jsp之類的,那在第八行的 index.html則改成各位要設成首頁的檔案名稱。

 

jboss-web.xml的設定範例

<jboss-web>   
	<context-root>/</context-root>
</jboss-web>

 

都設置好之後就可以執行 mvn wildfly:deploy來看看能不能成功。

要取消部屬則是使用 mvn wildfly:undeploy,執行方式差不多,過程小邊就不在這裡做示範了。

 

 

 

後記

這部分的設定嚴格來說應該算是最後最後的階段了,因為完全跳過了 Wildfly的安裝、設置,設置完畢之後以後部屬、取消部屬就可以直接下一條指令就全部結束了。

END

你可能感興趣的文章

【無料版模】﹝CSS&HTML﹞製作epub電子書版模免費下載&附使用教學 一個專門用來製作epub的簡單CSS檔案,基本上已經可以做出一本還不錯的電子書,讓妳的電子書不在只有預設的字體、樣式

【Linux】網路測速 network speed test 在沒有 GUI 的狀態之下,該如何進行簡單的網路測速呢?

【Wildfly/jBoss】[Linux](Connection Datasource)如何與MySQL資料庫建立連線 網頁瀏覽器和資料庫的關係密不可分,而通常會將兩者分開架設在不同的伺服器上面來提供服務,這時要如何進行連線呢?

【C++】如何解決TLE,換句話說便是加速cin, cout的執行速度 [ZERO JUDGE](UVa) a159: 11743 - Credit Check 題目練習和副程式練習

【C++】class練習 — 檢測該字串是否為迴圈 第一次的C++結構式寫法,雖然以後應該會見怪不怪,但畢竟是第一次所以還是想保存下來

【Stable Diffusion web UI】[AI 作畫](Linux)無 NVIDIA 顯卡之伺服器運行測試 凡事就是要試試看,才知道最後的結果

隨機好文

高捷少女:地下城的探險少女② 「等我一下喔,我好像有帶去漬的清潔噴霧。」婕兒翻翻飛揚,拿出噴霧劑給小穹,小穹趕緊對著汙漬噴了噴,紅茶漬果然乾淨了許多。「婕兒,謝謝妳。來,還妳。」小穹感謝地把噴霧還給她,卻發現婕兒盯著打開的飛揚,一

高捷少女:購票大作戰③  歐巴桑露出懷疑的表情。「怎麼了,您跟夏尼爾小姐不是朋友嗎?只要打電話確認就好了,不是嗎?」「是……是這樣沒錯……可是……」小穹支支吾吾地說。我的確是潔西塔的朋友,但

高捷少女:耐耐的新年驚喜② 「各位,我跟爸媽聊完了……」耐耐走進客廳,看到大家在看自己的相簿,臉蛋立刻紅了。「哇啊啊,不要看那個!」她三步併作兩步地走向少女們,將相簿拿走。「為什麼啊?小時候的耐耐很可愛啊。」婕兒不解地說。

婕兒──她的青春④ 「投降吧,耐耐!這回合妳將不會再有獲勝的機會了!哈哈哈哈!」 「妳確定?」耐耐臉上泛起一絲微笑,並將手中的牌展示給婕兒看 婕兒的笑容僵住了。恐懼浮現在她的臉。

【歌評】過去の花 過去的花 ~ Fairy of Flower 彼岸花(higan bana),就是歌曲名中所指的花,而彼岸花又有「地獄花jigoku bana」的別稱,請注意,蓮台野的周圍可是長滿彼岸花呢!