これまでのところ、ビルドプロセスが完全にant/shellスクリプトに基づいているプロジェクトです。enumを有効にするとMavenのコンパイルに失敗する
は、以下の列挙に考えてみましょう
public enum ResourceType {
A, B;
}
次豆:
public ResourceTypeOwner {
//set get resourceType property
}
そして、次のコードスニペット:
void foo(ResourceTypeOwner rto) {
ResourceType resourceType = rto.getResourceType();
switch (resourceType) {
case A:
handleA(resourceType); break;
case B:
handleB(resourceType); break;
default:
throw new RuntimeException("Unsupported resource type");
}
}
のmavenでビルドするとき、私はコンパイルエラーを取得しています:
ResourceTypeタイプの値をスイッチオンできません。のみINT 値または列挙変数は変換許可され
のpom.xml有する
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<version>3.0</version>
<configuration>
<compilerId>eclipse</compilerId>
<compilerVersion>1.6</compilerVersion>
<source>1.6</source>
<target>1.6</target>
</configuration>
<dependencies>
<dependency>
<groupId>org.codehaus.plexus</groupId>
<artifactId>plexus-compiler-eclipse</artifactId>
<version>2.2</version>
</dependency>
</dependencies>
</plugin>
...
</plugins>
両方(org.eclipse.jdt.core.JDTCompilerAdapter付き)アリおよびEclipseをコンパイルするため、以下のプラグインの設定ビルド/コンパイルは正常です。私は明らかに何か間違ったことをしています(報告されていないmaven-compiler-pluginまたはplexus-compiler-eclipseプラグインのバグではない、enumの切り替えは悪くない、ロケット科学でもない)。誰かがアイデアを持っていますか?
追加の環境の詳細
$ MVN -versionのApache Mavenの3.0.4(r1232337; 2012-01-17 10:44:56 + 0200) Mavenのホーム:/ホーム/ Dの/ dev /ツール/apache-maven-3.0.4 Javaバージョン: 1.6.0_35、ベンダー:Sun Microsystems Inc. Javaホーム:/opt/jdk1.6.0_35/jreデフォルトロケール:en_US、プラットフォームエンコード:UTF-8 OS名: Linuxの」バージョン: ""、アーチ: "3.2.0-40-ジェネリックAMD64"、家族: "UNIX"
UPDATE:
標準JDKコンパイラは、特定のクラスを正常にコンパイルします。 plexus-compiler-eclipse 2.2のように見えます。
チェック。私はあなたが同じ名前の別の(普通の)クラスを持っていると信じています。 – AlexR
私は、mvnリポジトリ全体を同じ名前のクラスで検索しました。誰もいません。また、2つの異なる列挙型で発生します(これらは列挙型がプロジェクト全体で切り替わる唯一のケースです)。最後に、列挙型をResourceType123456(eclipseリファクタを使用)に変更しました。同じ問題。しかし、Thx。 – dkateros
eclipseコンパイラを使用する必要がありますか? JDKのものは何ですか? – radai