maven maven.compiler.source和maven.compiler.target的坑


最近建議產品組把jdk 1.7升級到1.8,昨晚開發報了個問題過來,說maven.compiler.source和maven.compiler.target改成1.8之后,編譯出來的代碼還是1.7,如下:

也可通過javap -v ServiceImpl.class 查看class文件的java編譯版本號。

下午抽空看了下,果不其然,第一懷疑就是maven.compiler.source和maven.compiler.target這兩參數不靠譜。

看了下,IDE配置的JDK,如下:

自動build之后,的確是jdk 1.7,如下:

換成J2SE-1.8

 

 

 換成1.6

 

 

 查詢maven官方文檔,可知maven.compiler.source和maven.compiler.target僅僅是推薦,不是強制。

如果要強制jdk版本,可指定executable屬性來保證,如下:

<project>
  [...]
  <build>
    [...]
    <plugins>
      <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-compiler-plugin</artifactId>
        <version>3.7.0</version>
        <configuration>
          <verbose>true</verbose>
          <fork>true</fork>
          <executable><!-- path-to-javac --></executable>
          <compilerVersion>1.3</compilerVersion>
        </configuration>
      </plugin>
    </plugins>
    [...]
  </build>
  [...]
</project>

問題解決。

參考:

http://maven.apache.org/plugins/maven-compiler-plugin/examples/set-compiler-source-and-target.html

http://maven.apache.org/plugins/maven-compiler-plugin/examples/compile-using-different-jdk.html


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM