2015-10-16 29 views
6

Eclipseは独自のコンパイラ(ECJ)を使用してJavaコードをコンパイルします。 Eclipseでコンパイルされたプログラムのデバッグは簡単です。ホットコードの置き換えによって、簡単なコード変更をすぐに適用できるためです。MavenビルドでEclipse Java Compiler(ecj)を使用する

一方、Mavenは、(デフォルトで)oracle JDKを使用します。これは、Eclipseのデバッグ・セッションでホット・コードの置換を防止する別のバイト・コードを生成します。

私はプログラムをデバッグする予定があるので、私は私のMavenビルドでEclipse ECJコンパイラを使いたいと思います。

  • コンパイルが有効に熱いコードの交換も

    $ mvn -P ecj package 
    

プロファイルを持つ

$ mvn package 
  • コンパイルのスナップショットを解放:私は "ECJ" プロファイルになりますための便利な方法アクティブ化はsettings.xmlまたはEclipseプロジェクトのプロパティで指定することができます。

    私の質問は以下のとおりです。

    1. これは行くための正しい方法ですか?
    2. これはどのように設定できますか?
    3. これにはツールチェーンを使用できますか?
  • 答えて

    9

    It is possiblemaven-compiler-pluginで使用されるデフォルトjavacコンパイラを変更します。 Eclipseコンパイラは、アーティファクトplexus-compiler-eclipseにバンドルされており、eclipseをのcompilerId属性に設定することによって宣言されています。

    <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に維持されている:あなたはcustom profileのために、この変更を有効にする場合

    は、次の構成を持つことができます。バージョン2.8.1 uses 3.11.1.v20150902-1521 of JDTですが、Plexusコンパイラの依存関係の後にorg.eclipse.tycho:org.eclipse.jdt.coreに依存関係を追加することで、独自のバージョンを使用できます。

    +0

    魅力的な作品です!ありがとうございました! –

    +2

    それはあなたのためにうまくいきます。ちょうど場合:私は叢書 - コンパイラ - 日食が維持されている場所を見つけることができませんでしたし、結果として私は彼らが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 –

    関連する問題