2013-05-21 8 views
7

私はUbuntuの12.04でこのエラーmvn -e packageを得る:Mavenが私のコードを-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 

だから私はMavenのは、Javaの古いバージョンに対してコンパイルすることを余儀なくされると思います。しかしなぜそうですか? Mahout jarをビルドするmavenの設定が必要です。

<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> 

私は理由として、あなたの元の質問に答えるかもしれない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

最新[mavenの-コンパイラプラグイン:3.1]を使用してください(http://search.maven.org/#artifactdetails%7Corg.apache.maven.plugins%7Cmaven-compiler-plugin%7C3.1% 7Cmaven-プラグイン)。デフォルトの '-source'は、[here](http://maven.apache.org/plugins/maven-compiler-plugin/compile-mojo.html#source)のように「1.5」となります。 –

答えて

13

使用のMavenコンパイラプラグイン

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

本当の答えですが、Mavenが以前のバージョンを選択した理由を説明できますか? – aitchnyu

+0

コンパイラのプラグインがバージョン2(そしてあなたのものは2.0.2)から1.5にデフォルト設定されているので、Javaバージョン1.3のバージョンは本当に奇妙です。 –

+0

なぜダウンワードですか?私の答えは正しかったです。正確な理由はわからない) –

1

This answer to a similar qestionで構築しようとしています。そのポストから引用

:Mavenのコンパイラプラグインの設定

は、問題を解決します。 Ubuntu リポジトリのMaven3パッケージが原因で問題が解決されたのは です。もう一つの修正点は、Apache ウェブサイトからMaven 3をダウンロードすることです。これは最新のCompilerプラグインを使用しています。

ドキュメントに のデフォルトのJavaソースが1.5であると書かれているときに、なぜこのようなことが起こったのかを知りたいと思っていました。 MVNがあなたの コンパイラプラグインを使用するために使用しているかを確認するには、次の

MVNのヘルプ:

私のMavenコンパイラプラグインは2.0.2だった効果的な-POMを、私はUbuntuのパッケージからのMaven 3.0.4 を使用していたにもかかわらず。 ApacheからMaven 3.0.4を使用して同じコマンドを実行すると、プラグインのバージョン2.3.2がデフォルトでJava 1.5になります。

関連する問題