Sto mavenifying (è una parola?) Un progetto il cui processo di compilazione è stato finora basato interamente su script ant/shell.Errore di compilazione Maven all'accensione di enum
Si consideri il seguente enum
public enum ResourceType {
A, B;
}
Il seguente fagiolo:
public ResourceTypeOwner {
//set get resourceType property
}
E il seguente frammento di codice:
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");
}
}
sto ottenendo un errore di compilazione quando si costruisce con Maven:
Impossibile attivare un valore di tipo ResourceType. Solo cabriolet sono consentiti int valori o variabili enum
Il pom.xml ha la seguente configurazione del plugin per la compilazione
<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>
Sia formica (con org.eclipse.jdt.core.JDTCompilerAdapter) ed Eclipse compilare/compilare bene. Ovviamente sto facendo qualcosa di sbagliato (a meno che non si tratti di un plug-in maven-compiler-plugin o plexus-compiler-eclipse plugin non segnalato, il che è alquanto improbabile, accendere enumerazioni non è né male né scienza missilistica). Qualcuno ha un'idea?
Ulteriori dettagli dell'ambiente
$ MVN -version Apache Maven 3.0.4 (r1232337; 2012-01-17 10: 44: 56 + 0200) Maven casa:/home/d/dev/strumenti /apache-maven-3.0.4 Versione Java: 1.6.0_35, vendor: Sun Microsystems Inc. Java home: /opt/jdk1.6.0_35/jre Impostazioni locali predefinite: en_US, codifica piattaforma: UTF-8 Nome sistema operativo: " Linux", la versione: "3.2.0-40-generico", arco: "amd64", la famiglia: "unix"
UPDATE:
Il compilatore JDK standard compila correttamente la classe specifica. Sembra un problema di plexus-compiler-eclipse 2.2.
Verificare se si dispone di un solo 'ResourceType' nel classpath (incluse le dipendenze). Credo che tu abbia un'altra classe (regolare) con lo stesso nome. – AlexR
Ho appena cercato l'intero repository mvn per le classi con lo stesso nome. Non ce ne sono. Inoltre, accade su due Enum diversi (questi sono gli unici casi in cui un enum viene attivato sull'intero progetto). Finalmente ribattezzato enum su ResourceType123456 (con refact dell'eclisse). Stesso problema. Thx però. – dkateros
devi usare il compilatore eclipse? cosa c'è di sbagliato in quello jdk? – radai