問題1:jar不下載或下載了但不能用
問題現象:
- 項目中使用了maven,而且搭建了nexus 私服。使用maven構建的項目下面都有一個pom.xml文件,裏面設置了該項目的依賴的jar包。第一次因爲沒有聯網或者nexus服務未啓動,導致下載jar失敗,以後依然下載失敗。
- 某jar已經下載了,但在pom.xml中配置時顯示不能找到jar
編譯的時候可能會報類似下面的錯誤
問題分析:
因爲第一次下載失敗時,會在repository 中生成對應jar包的lastUpdated文件,如xwork-core-2.1.6.jar.lastUpdated。因爲有這個lastUpdated文件,所以以後都不會真正下載xwork-core-2.1.6.jar了。
解決方案:
(1)把倉庫中的xxx.lastUpdated.xxx文件(基本都是xxx.jar.lastUpdated和xxx.pom.lastUpdated、xxx-lastUpdated.properties)全部刪除(可直接查找所有包含lastUpdated單詞的文件名),再運行maven命令,如mvn compile
(2)在使用maven命令時加上-U參數,就可以忽略xxx.lastUpdated.xxx,如mvn compile –U,或者在Eclipse插件下進行選擇。
問題2:java編譯版本的問題
問題現象:
在Eclipse中新建了一個Maven工程, 然後更改JDK版本爲1.6, 結果每次使用Maven > Update project的時候JDK版本都恢復成1.5。
原因分析:
Maven官方文檔有如下描述:
編譯器插件用來編譯項目的源文件.從3.0版本開始, 用來編譯Java源文件的默認編譯器是javax.tools.JavaCompiler (如果你是用的是java 1.7) . 如果你想強制性的讓插件使用javac,你必須配置插件選項 forceJavacCompilerUse. 同時需要注意的是目前source選項和target 選項的默認設置都是1.5, 與運行Maven時的JDK版本無關.如果你想要改變這些默認設置, 可以參考 Setting the -source and -target of the Java Compiler中的描述來設置 source 和target 選項. |
這是Maven已知的一個特性。除非在你的POM文件中顯示的指定一個版本,否則會使用編譯器默認的source/target版本1.5。主要還是在於Eclipse中Maven的集成方式起到了關鍵作用, 它會從POM文件中生成項目的.project,.classpath以及.settings, 因此除非POM文件指定了正確的JDK版本, 否則你每次更新項目配置的時候它都會重置到1.5版本。
解決方案:
在pom.xml文件中增加如下配置:
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<version>3.1</version>
<configuration>
<source>1.7</source>
<target>1.7</target>
</configuration>
</plugin>
</plugins>
</build>
【提示】
maven-compiler-plugin 插件有對應的jdk版本要求:
maven-compiler-plugin版本 |
Jdk |
2.5.2 |
1.5 |
3.1 |
1.6,1.7 |
另外,最好在全局settings.xml中設置指定maven中的jdk1.7的默認屬性配置:
<profile>
<id>jdk1.6</id>
<activation>
<activeByDefault>true</activeByDefault>
<jdk>1.7</jdk>
</activation>
<properties>
<maven.compiler.source>1.7</maven.compiler.source>
<maven.compiler.target>1.7</maven.compiler.target>
<maven.compiler.compilerVersion>1.7</maven.compiler.compilerVersion>
</properties>
</profile>
【提示】
上述全局修改後,以後再建立項目,默認就用jdk1.7的編譯版本了(覆蓋了默認值的jdk1.5)。
如果不是新建項目,那麼需要在POM.xml中覆蓋編譯版本。
Trick:關於maven中調試代碼
調試無法關聯源碼
相關資源下載爲:鏈接:https://pan.baidu.com/s/15sck7pWV18JUm80bV__BRg
提取碼:4si5
截圖有: