2015-10-16 80 views
6

Eclipse使用它自己的編譯器(ECJ)來編譯Java代碼。調試用Eclipse編譯的程序比較容易,因爲可以立即應用簡單的代碼更改(通過熱代碼替換)。在maven版本中使用Eclipse Java編譯器(ecj)

另一方面,Maven使用(默認情況下)Oracle JDK,它生成不同的字節代碼,以防止Eclipse調試會話中的熱代碼替換。

所以我想用我的Maven構建Eclipse ECJ編譯器,如果我打算調試程序。對我來說一個方便的方式將是一個 「歐洲法院」 簡介:

  • 編譯釋放

    $ mvn package 
    
  • 編譯快照啓用了熱代碼替換

    $ mvn -P ecj package 
    

而且輪廓激活可以在settings.xml甚至Eclipse項目屬性中指定。

我的問題是:

  1. 這是要走的路嗎?
  2. 這是怎麼配置的?
  3. 可以使用maven工具鏈嗎?

回答

9

It is possible更改maven-compiler-plugin使用的默認javac編譯器。 Eclipse編譯器捆綁在工件plexus-compiler-eclipse中,並且通過將eclipse設置爲maven-compiler-plugincompilerId屬性來聲明它。

如果要激活這一變化爲custom profile,你可以有以下配置:

<profile> 
    <id>ecj</id> 
    <build> 
    <plugins> 
     <plugin> 
     <artifactId>maven-compiler-plugin</artifactId> 
     <version>3.6.0</version> 
     <configuration> 
      <compilerId>eclipse</compilerId> 
     </configuration> 
     <dependencies> 
      <dependency> 
      <groupId>org.codehaus.plexus</groupId> 
      <artifactId>plexus-compiler-eclipse</artifactId> 
      <version>2.8.1</version> 
      </dependency> 
     </dependencies> 
     </plugin> 
    </plugins> 
    </build> 
</profile> 

插件保持在plexus-compiler GitHub repository。版本2.8.1 uses 3.11.1.v20150902-1521 of JDT,雖然您可以在Plexus編譯器依賴關係之後添加對org.eclipse.tycho:org.eclipse.jdt.core的依賴,從而使用您自己的版本。

+0

工程就像一個魅力!謝謝! –

+2

好它適合你。以防萬一:我無法找到plexus-compiler-eclipse正在維護的位置,因此我不確定它們是否提供了與最新版本的ecj的集成(最新的我可以找到的是從20140604開始整合ecj)。如果上述方法出現問題,JDT FAQ也有一些提示(推薦tycho-compiler-jdt用於該任務):https://wiki.eclipse.org/JDT/FAQ#Can_I_use_JDT_outside_Eclipse_to_compile_Java_code.3F –

相關問題