2013-05-21 11 views
7

ottengo questo errore mvn -e package in Ubuntu 12.04:Perché Maven sta cercando di compilare il mio codice come -source 1.3?

[ERROR] Failed to execute goal org.apache.maven.plugins:maven-compiler-plugin:2.0.2:compile (default-compile) on project HadoopSkeleton: Compilation failure: Compilation failure: 
[ERROR] /home/jesvin/dev/hadoop/HadoopMahoutSkeleton-master/src/main/java/HadoopSkeleton/App.java:[22,8] error: generics are not supported in -source 1.3 
[ERROR] 
[ERROR] (use -source 5 or higher to enable generics) 
[ERROR] /home/jesvin/dev/hadoop/HadoopMahoutSkeleton-master/src/main/java/HadoopSkeleton/App.java:[53,28] error: for-each loops are not supported in -source 1.3 
[ERROR] -> [Help 1] 
org.apache.maven.lifecycle.LifecycleExecutionException: Failed to execute goal org.apache.maven.plugins:maven-compiler-plugin:2.0.2:compile (default-compile) on project HadoopSkeleton: Compilation failure 
    at org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:213) 
    at org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:153) 
    at org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:145) 
    at org.apache.maven.lifecycle.internal.LifecycleModuleBuilder.buildProject(LifecycleModuleBuilder.java:84) 
    at org.apache.maven.lifecycle.internal.LifecycleModuleBuilder.buildProject(LifecycleModuleBuilder.java:59) 
    at org.apache.maven.lifecycle.internal.LifecycleStarter.singleThreadedBuild(LifecycleStarter.java:183) 
    at org.apache.maven.lifecycle.internal.LifecycleStarter.execute(LifecycleStarter.java:161) 
    at org.apache.maven.DefaultMaven.doExecute(DefaultMaven.java:320) 
    at org.apache.maven.DefaultMaven.execute(DefaultMaven.java:156) 
    at org.apache.maven.cli.MavenCli.execute(MavenCli.java:537) 
    at org.apache.maven.cli.MavenCli.doMain(MavenCli.java:196) 
    at org.apache.maven.cli.MavenCli.main(MavenCli.java:141) 
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) 
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57) 
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) 
    at java.lang.reflect.Method.invoke(Method.java:601) 
    at org.codehaus.plexus.classworlds.launcher.Launcher.launchEnhanced(Launcher.java:290) 
    at org.codehaus.plexus.classworlds.launcher.Launcher.launch(Launcher.java:230) 
    at org.codehaus.plexus.classworlds.launcher.Launcher.mainWithExitCode(Launcher.java:409) 
    at org.codehaus.plexus.classworlds.launcher.Launcher.main(Launcher.java:352) 
Caused by: org.apache.maven.plugin.CompilationFailureException: Compilation failure 
    at org.apache.maven.plugin.AbstractCompilerMojo.execute(AbstractCompilerMojo.java:516) 
    at org.apache.maven.plugin.CompilerMojo.execute(CompilerMojo.java:114) 
    at org.apache.maven.plugin.DefaultBuildPluginManager.executeMojo(DefaultBuildPluginManager.java:101) 
    at org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:209) 
    ... 19 more 
[ERROR] 
[ERROR] Re-run Maven using the -X switch to enable full debug logging. 
[ERROR] 
[ERROR] For more information about the errors and possible solutions, please read the following articles: 
[ERROR] [Help 1] http://cwiki.apache.org/confluence/display/MAVEN/MojoFailureException 

Quindi credo Maven è costretto a compilare contro una vecchia versione di Java. Ma perché lo fa? Voglio solo una configurazione Maven che costruisca barattoli Mahout.

<dependencies> 
    <dependency> 
     <groupId>junit</groupId> 
     <artifactId>junit</artifactId> 
     <version>4.11</version> 
     <scope>test</scope> 
    </dependency> 
    <dependency> 
     <groupId>org.apache.hadoop</groupId> 
     <artifactId>hadoop-core</artifactId> 
     <version>1.0.4</version> 
     <!-- or whatever version --> 
    </dependency> 
    <dependency> 
     <groupId>org.apache.mahout</groupId> 
     <artifactId>mahout-core</artifactId> 
     <version>0.7</version> 
    </dependency> 
</dependencies> 

Sto cercando di costruire da https://github.com/yeahiii/HadoopMahoutSkeleton/blob/master/pom.xml

java version "1.7.0_21" 
Java(TM) SE Runtime Environment (build 1.7.0_21-b11) 
Java HotSpot(TM) Server VM (build 23.21-b01, mixed mode) 
+0

Si prega di utilizzare l'ultima [Maven-compiler-plugin: 3.1] (http://search.maven.org/#artifactdetails%7Corg.apache.maven.plugins%7Cmaven-compiler-plugin%7C3.1% 7Cmaven-plugin). L'impostazione predefinita '-source' sarà' 1.5' come menzioni [qui] (http://maven.apache.org/plugins/maven-compiler-plugin/compile-mojo.html#source). –

risposta

13

Usa Maven compilatore plug

<plugins> 
    <plugin> 
      <artifactId>maven-compiler-plugin</artifactId> 
      <version>3.1</version> 
      <configuration> 
       <source>1.7</source> 
       <target>1.7</target> 
      </configuration> 
     </plugin> 
</plugins> 
+1

Risposta vera, ma potresti spiegare perché Maven sceglie una versione precedente? – aitchnyu

+0

Devo ammettere che la versione di Java versione 1.3 è davvero strana, perché i plug-in del compilatore sono impostati su 1.5 dalla versione 2 (e il tuo è 2.0.2) –

+0

Perché downwote? La mia risposta era corretta e ho anche cercato di spiegare cosa è successo (anche se io non so il motivo esatto) –

1

This answer to a similar qestion potrebbe rispondere alla tua domanda iniziale sul perché.

Citando quel post:

Configurazione del compilatore plugin Maven risolverà il problema. Diventa il problema è stato causato dal pacchetto Maven3 nel repository di Ubuntu . Una correzione alternativa consiste nel scaricare Maven 3 dal sito Web Apache che utilizza un plug-in del compilatore più aggiornato.

Volevo sapere perché questo stava accadendo quando la documentazione afferma l'origine Java predefinita è 1.5. Per vedere cosa mvn sta usando per il vostro uso plug compilatore:

mvn aiuto: efficacia-pom

mio Maven Compiler 2.0.2 plugin è stato, anche se stavo usando Maven 3.0.4 dai pacchetti di Ubuntu. Quando eseguo lo stesso comando usando Maven 3.0.4 da Apache, ho una versione 2.3.2 del plugin, che per impostazione predefinita è Java 1.5 come previsto.

Problemi correlati