問題:
在運行maven項目的時候,發現在項目上右鍵run as 沒有run on server選項;
解決方法:在新建maven項目的時候,在packaging中選war而不選jar。
如圖,通過maven建web項目時packaging里選war:
我測試過,如果Packaging里選的是jar,項目無論如何都無法作為web項目正常啟動。
我也測試了另一種方法,貌似無效:
這種方法是在新建maven時Packaging里選jar,但是中間通過以下方式改成動態的web項目。
具體做法如下:
在maven項目上右鍵>properties>Project Facets:
可以看到當前並不是web項目,所以勾選兩個選項:Dynamic Web Module、JavaScript:
如果項目中沒有web.xml可以在這里進行預設置
可以點擊上圖中的Further configuration avaliable
之后可以看到默認配置:
如果不修改它的默認配置,會直接在項目發布路徑下生成webcontent,如下圖所示:
所以需要修改配置如下:
勾選生成web.xml(如果不勾選不會生成web.xml),並修改web.xml生成的所在文件夾為webapp。
點擊OK,之后點擊Apply即可。
如下圖,已經生成webapp和內部的web.xml:
接着按照正常的項目結構,可以把webapp拖到src下main文件夾:
之后,可以在項目上右鍵run as,就可看到Run on server:
服務啟動后,瀏覽器也能正常啟動,但是還沒完,還是會出錯。
我配的歡迎頁面失效了,會顯示404:
看來聲明為jar還是無法運行成功。
基本上,除了改成war包,還沒找到其它方法解決方法。
可以看一下建立maven項目時,聲明jar包與war包產生的兩種pom文件區別:
jar:
<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/xsd/maven-4.0.0.xsd"> <modelVersion>4.0.0</modelVersion> <groupId>com.changping.shirodemo</groupId> <artifactId>shirodemo</artifactId> <version>0.0.1-SNAPSHOT</version> </project>
war:
<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/xsd/maven-4.0.0.xsd"> <modelVersion>4.0.0</modelVersion> <groupId>com.changping.shirodemo01</groupId> <artifactId>shirodemo01</artifactId> <version>0.0.1-SNAPSHOT</version> <packaging>war</packaging> </project>
通過比較pom文件可以發現:聲明war也就比jar多了<packaging>war</packaging>。
所以如果不想新建maven項目、或者歡迎頁面不想變404的話,可以在pom文件里加上<packaging>war</packaging>,修改之后update即可。
如圖是packaging修改為war,服務啟動后,歡迎頁面已經可以正常顯示:
至於如果maven項目里webapp下沒有web.xml的解決方法,除了剛才那種右鍵>properties>Project Facets方式以外,還可以直接從別的項目粘一個即可: