解決Maven項目中的錯誤:Cannot change version of project

摘要:
        在新建Maven的Web項目時,本來沒有錯誤,使用Maven的Update Maven Project時,項目有錯誤提示:Cannot change version of project facet Dynamic web module to 2.5,本文主要講一下該錯誤提示的解決方案。java

1、首先找到項目的web.xml文件,能夠看到內容以下:web

<!DOCTYPE web-app PUBLIC
 "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN"
 "http://Java.sun.com/dtd/web-app_2_3.dtd" >

<web-app>
  <display-name>Archetype Created Web Application</display-name>
</web-app>

能夠看到因爲catalog比較老,致使新建的模板中的servlet版本較老,仍是2.3tomcat

2、找到tomcat安裝目錄下的webapps文件夾,去ROOT項目下複製web.xml,內容以下:
 app

<?xml version="1.0" encoding="utf-8"?>

<web-app xmlns="http://java.sun.com/xml/ns/javaee" 
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="http://java.sun.com/xml/ns/javaee 
    http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd"
	version="3.0" metadata-complete="true">
</web-app>

這樣就把servlet版本改爲了3.0eclipse

 

3、在Navigator視圖下查看項目的.settings文件夾webapp

一、在Eclipse菜單欄中的Window選項下選擇:Show View,在Show View選項下選中Navigator,這樣就能夠打開Navigator視圖maven

二、在Navigator視圖下查看項目的.settings文件夾ui

注:.settings文件夾下的文件簡介:編碼

1).jsdtscope:文件定義了web項目中的源碼路徑,也就意味着只有web project纔會有這個配置。這些源碼Eclipse會進行validate(若是validate沒有禁用)。這個文件在實際開發中最大的價值在於定義JS文件的例外路徑code

2)org.eclipse.core.resources.prefs:規定項目內的文件的編碼

3)org.eclipse.jdt.core.prefs:指定java編譯特性,例如java版本之類

4)org.eclipse.m2e.core.prefs:指定一些和maven相關的配置

5)org.eclipse.wst.common.component:規定項目中如何組裝成一個webapp

6)org.eclipse.wst.common.project.facet.core.xml:指定項目中啓用那些facet和facet的版本

7)org.eclipse.wst.jsdt.ui.superType.container:用途不詳,待查

8)org.eclipse.wst.jsdt.ui.superType.name:用途不詳,待查

9)org.eclipse.wst.validation.prefs:用途不詳,待查

以上這些配置均可以經過可視化界面進行配置,當一些配置莫名其妙失靈時,能夠嘗試着手動更改上面這些配置文件中的配置信息來糾正問題。

三、回到正題,先修改org.eclipse.jdt.core.prefs(java編譯信特性),我用的是java1.8,配置信息以下:
 

eclipse.preferences.version=1
org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=enabled
org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.8
org.eclipse.jdt.core.compiler.compliance=1.8
org.eclipse.jdt.core.compiler.problem.assertIdentifier=error
org.eclipse.jdt.core.compiler.problem.enumIdentifier=error
org.eclipse.jdt.core.compiler.problem.forbiddenReference=warning
org.eclipse.jdt.core.compiler.source=1.8

四、修改org.eclipse.wst.common.component(項目中組裝webapp的規則),更改project-version爲1.6.0:
 

<?xml version="1.0" encoding="UTF-8"?><project-modules id="moduleCoreId" project-version="1.6.0">
    <wb-module deploy-name="service">
        <wb-resource deploy-path="/" source-path="/target/m2e-wtp/web-resources"/>
        <wb-resource deploy-path="/" source-path="/src/main/webapp" tag="defaultRootSource"/>
        <wb-resource deploy-path="/WEB-INF/classes" source-path="/src/main/java"/>
        <wb-resource deploy-path="/WEB-INF/classes" source-path="/src/main/resources"/>
        <property name="context-root" value="service"/>
        <property name="java-output-path" value="/service/target/classes"/>
    </wb-module>
</project-modules>

五、修改org.eclipse.wst.common.project.facet.core.xml,修改java version爲1.8,jst.web version爲3.0

<?xml version="1.0" encoding="UTF-8"?>
<faceted-project>
  <fixed facet="wst.jsdt.web"/>
  <installed facet="jst.web" version="3.0"/>
  <installed facet="wst.jsdt.web" version="1.0"/>
  <installed facet="java" version="1.8"/>
</faceted-project>

4、完成上述步驟後,在Project Explorer視圖下,右擊項目選中Maven選項,在彈出的選項中選中Update Project,而後點擊OK,這時發現報錯已經消失了

相關文章
相關標籤/搜索