我正在简化(这是一个词吗?)一个项目,其构建过程到目前为止完全基于 ant/shell 脚本。
考虑以下枚举
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>
ant(使用 org.eclipse.jdt.core.JDTCompilerAdapter)和 eclipse 构建/编译都很好。我显然做错了什么(除非它是一个未报告的 maven-compiler-plugin 或 plexus-compiler-eclipse 插件错误,这有点不太可能,打开枚举既不是坏事也不是火箭科学)。有人有想法吗?
其他环境细节
$mvn -version Apache Maven 3.0.4 (r1232337; 2012-01-17 10:44:56+0200) Maven 主页:/home/d/dev/tools/apache-maven-3.0.4 Java 版本:1.6.0_35 ,供应商:Sun Microsystems Inc. Java 主页:/opt/jdk1.6.0_35/jre 默认语言环境:en_US,平台编码:UTF-8 操作系统名称:“linux”,版本:“3.2.0-40-generic”,arch :“amd64”,家庭:“unix”
更新:
标准 JDK 编译器成功编译特定类。看起来像一个 plexus-compiler-eclipse 2.2 问题。