大家好,這裡是好不容易弄好這個的小編過路君子
基本上沒有什麼中文說明文件可以看,生咬了一大堆的英文文檔,不想再來一次了
如果各位只是想要單純將檔案打包成 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,有兩種狀況:
2. 本來就跑在伺服器上的 Wildfly,換言之,就是透過 systemctl start wildfly或 systemctl stop wildfly來啟動或是停止 Wildfly
本文章所針對的狀況是狀況二,如果各位是採用狀況一,那...小編也只能跟你說一聲不好意思了。
在正式進到 Maven設定前,需要各位先確認自己的 Wildfly正在運作中,如下圖:
(所有圖片點擊都可以放大、變高清)
至於 Wildfly如何安裝、設置在這裡不是重點,所以小編在這就稍稍提一下就帶過了。
小編在將 Wildfly交給 Maven託管前,就已經將其設定全部結束了,包括綁定 Public IP、防火牆規則設置或是 Wildfly啟動規則設置。
所以如果在尚未交給 Maven託管就無法透過瀏覽器來訪問,就算現在交給 Maven託管也不會突然就可以被瀏覽器來訪問,在這裡只是將「部屬」和「取消部屬」的權利交給了 Maven,並不會對 Wildfly的任何基本設定做變動。
那接下來就進到了 Maven設置了,第一步,當然是先將 Maven的專案結構給先全部建立好,整體結構如下:
Basic-Setting(專案目錄)
其中跟 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的安裝、設置,設置完畢之後以後部屬、取消部屬就可以直接下一條指令就全部結束了。