表題のようなオーダーがあった。
それもjavac -c -private hoge.classの出力結果レベルで同一にしないといけない(ぉぃ
eclipseのコンパイラはjavacコンパイラと違いjdtというコンパイラ。
確か、最適化よりも高速でビルドに重点を置いてたビルダーだったはず(jikeベースだっけ?)
一方のmavenではpom.xmlにビルド設定としてmaven-compiler-pluginを使うと思うんだけど、
こいつはjavacでビルドしてしまう。
というわけでここで問題になってくるのは以下のもの
・コンパイラが違うので同一に揃える
・コンパイルオプションも同一に揃える
一つ目のコンパイラを揃える方法は意外に簡単。
mavenのビルドをjavacを使うコンパイルでは無くjdtにしてやる。
ではpom.xmlにどういう設定をしてやればいいのかというと以下に変更すればよい。
それぞれの中に記載してやればできる。
maven-compiler-pluginを使う場合
org.apache.maven.plugins
maven-compiler-plugin
2.3.2
jdt
1.6
1.6
UTF-8
org.sonatype.tycho
tycho-compiler-jdt
0.8.0
使わない場合
org.codehaus.tycho
maven-osgi-compiler-plugin
1.6
1.6
UTF-8
2つ目のコンパイルオプションも同一に揃える方法のほうはeclipseの設定を変えてやればよい。
eclipseのデフォルト設定だとクラスファイル生成時にデバッガーが使用する情報まで含めてしまう。
一方でmavenは設定をpom.xmlに記載しないとデバッガーが使用する情報を含めない。
その為差異が出てしまう。
では、どう解消するかというと
eclipseのメニューから「設定>Java>コンパイラー」を選択
クラスファイル生成にある「未使用のローカル変数を保存」のチェックを外してやる
以上の方法で表題の内容が達成できる。