使用STS或者Eclipse這樣的IDE創建Maven Web工程還真不是一般的麻煩!
看了網上不少的方法介紹,操作下來總有區別,不是這里不對就是那里不對。
下面是嘗試了幾次之后成功的方法,記錄一下。
環境信息
Spring Tool Suite
Version: 3.8.3.RELEASE
Build Id: 201612191351
Platform: Eclipse Neon.2 (4.6.2)
Maven 3.3.9
創建Maven工程
File->New->Project,選擇Maven Project
可以修改保存位置,這里使用默認,注意不勾選Create a simple project
選擇maven-archetype-webapp,這里最新的版本是1.0
填寫坐標:Group Id、ArtifactId、Version,然后點擊Finish
剛生成的Maven工程看起來會有些問題,甚至提示錯誤,不用理,下面逐個解決。
首先,為了防止亂碼,要記得改一下編碼為UTF-8,點Project->Properties->Resource->Text file encoding,改成UTF-8。
剛創建完的工程,在Package Explorer里面src/main/resources可能顯示的是普通的Folder而不是source folder,
這塊可以調整Perspective試試,不要用Java EE,試試Java Perspective或者Spring Perspective。
如果還不行,就繼續看下面的調整。
默認Java Compiler是1.5太低了,調整為1.7
提示Build可以點“Yes”
修改Java Build Path,從默認1.5改成1.7
如果已經安裝了,但是STS中沒有顯示的話,可以點Installed JREs進行查看,點Add...添加
需要注意:路徑是到jdk的路徑,不是到jre
注意有錯誤提示:兩個build path找不到,到Order and Export中勾選上,然后點Apply
然后到Source中看到還是提示missing
在Package Explorer中點工程的名字,右鍵->Maven->Update Project...,並勾選上Force Update of Snapshots/Releases,點OK
等着更新完了,再來查看Project->Properties->Java Build Path->Source 就沒有找不到的提示了
修改src/test/java 和 src/test/resource對應的輸出目錄到target/test-classes
全都修改完了,還是能看到index.jsp提示錯誤,這是因為沒有導入對應的javaee api依賴包
<!-- 導入java ee jar 包 --> <dependency> <groupId>javax</groupId> <artifactId>javaee-api</artifactId> <version>7.0</version> </dependency>
在pom.xml中添加javaee-api包依賴,保存之后瞬間錯誤提示就消失了
下面修改Project Facets,這塊比較麻煩,通常上來就會出錯
先改Java版本到1.7,然后點Apply
然后我們把Dynamic Web Module版本改到3.0,發現會提示錯誤
注意這里的操作很關鍵:
在Package Explorer中右鍵點擊工程名稱MavenWebDemo,選擇Show in -> Navigator,然后展開.settings,逐個文件改一下配置
這個第一個需要改的,project版本號改到1.7.0
這個是第二個要改的,把jst.web版本改到3.0
然后再去查看Project->Properties->Project Facets,發現就都符合期望了
參考鏈接:
使用maven創建web項目 http://blog.csdn.net/zhshulin/article/details/37921705
解決Cannot change version of project facet Dynamic web module to 2.5 http://blog.csdn.net/steveguoshao/article/details/38414145
Eclipse+Maven src/main/java not visible in src folder in Package Explorer http://stackoverflow.com/questions/18790106/eclipsemaven-src-main-java-not-visible-in-src-folder-in-package-explorer