一、應用場景
有時候項目報紅色的感嘆號錯誤也是由於項目中沒有導入相關jar報導致報錯
為了使用maven強大的包依賴管理和項目管理功能,故在項目中使用maven2作為項目建構工具。
但是我的項目在內網構建,為了能使用maven2,只能使用本地倉庫依賴策略。
但是,有時候明明本地倉庫確確實實存在相應的依賴包,但是在eclipse環境下依然會報錯,即:在pom.xml顯示錯誤提示信息。
經過我的實踐證明,可以通過如下方式解決。
二、示例講解
以依賴commons-io-2.0.1為例講解:
在pom.xml中配置:
<dependency>
<groupId>commons-io</groupId>
<artifactId>commons-io</artifactId>
<version>2.0.1</version>
</dependency>
三、解決方案
1、 首先,從其他可以在外網下載相應依賴包的地方下載好相應的依賴包到本地倉庫,再將該本地倉庫拷貝到項目相應位置,便於引用。
2、安裝Maven2並進行相應配置,關於Maven2具體安裝和配置,略過。
注意:在Maven2的配置文件setting.xml一定要修改如下屬性:
<offline>true</offline>
該屬性配置默認為false,因為是在內網,無法到外網下載依賴包,所以一定要配置離線屬性為true。
3、如果本地倉庫確實存在該依賴包,且eclipse沒有報錯,那么在本地倉庫中找到該依賴包所在的位置,相應目錄下必定存在如下6個文件(不是非要全部存在):
_maven.repositories
commons-io-2.0.1.jar
commons-io-2.0.1.jar.sha1
commons-io-2.0.1.pom
commons-io-2.0.1.pom.sha1
m2e-lastUpdated.properties
圖1 依賴配置正確且eclipse沒有報錯時依賴包目錄下包含的文件
當然,如下載了源碼的話,應該還包括如下2個文件:
commons-io-2.0.1-sources.jar
commons-io-2.0.1-sources.jar.sha1
所以,如果當本地倉庫中確實存在相應的依賴jar包,但是在eclipse中依然報錯的話,請進入到相應依賴包的目錄位置,觀察該目錄下是否對應存在如圖1所示的6個文件。
通常情況下,當在eclipse中報錯的話,在依賴包目錄下還存在一個“xxx.lastUpdated”文件。
如果確實存在“xxx.lastUpdated”文件的話,請先刪除該文件。並確認是否存在如下2個文件:
_maven.repositories
m2e-lastUpdated.properties
通常在eclipse中報錯的話,是不會存在這2個文件的,到別的依賴正確的jar包目錄下去拷貝這2個文件到當前目錄下,並修改相應內容:
(1)、 修改“_maven.repositories”內容:
#NOTE: This is an internal implementation file, its format can be changed without prior notice.
#Wed Jul 10 09:16:30 CST 2013
${artifactId}-${version}-sources.jar>nexus=
${artifactId}-${version}.jar>central=
${artifactId}-${version}.pom>central=
${artifactId}-${version}.pom>nexus=
${artifactId}-${version}.jar>nexus=
如:commons-io-2.0.1依賴包目錄下的_maven.repositories文件內容如下:
#NOTE: This is an internal implementation file, its format can be changed without prior notice.
#Wed Jul 10 09:16:30 CST 2013
commons-io-2.0.1-sources.jar>nexus=
commons-io-2.0.1.jar>central=
commons-io-2.0.1.pom>central=
commons-io-2.0.1.pom>nexus=
commons-io-2.0.1.jar>nexus=
(2)、 m2e-lastUpdated.properties文件內容可以不用修改!
完成后,在eclipse中clean一下項目,並執行“Maven->Update Project...”,OK,問題解決!
歡迎添加微信