最近新接觸scala代碼的編寫(xiě)、編譯,使用mvn編譯項(xiàng)目時(shí)經(jīng)常碰到“ExecuteException: Process exited with an error: 1 (Exit value: 1)” 。特別是在mvn clean再mvn package時(shí),很容易出現(xiàn)。
另外,從錯(cuò)誤日志上看不到具體是哪行代碼編譯有問(wèn)題,找不到原因,很無(wú)奈。
最近一次出現(xiàn)該問(wèn)題是從spark2.1.1中copy了spark-streaming-kafka-0-10_2.11子項(xiàng)目的源碼,精簡(jiǎn)pom.xml之后編譯,又出現(xiàn)這類問(wèn)題,詳細(xì)日志如下:
[ERROR] Failed to execute goal net.alchim31.maven:scala-maven-plugin:3.2.2:compile (default) on project yisou-spark-streaming-kafka-0-10_2.11: wrap: org.apache.commons.exec.ExecuteException: Process exited with an error: 1 (Exit value: 1) -> [Help 1]
org.apache.maven.lifecycle.LifecycleExecutionException: Failed to execute goal net.alchim31.maven:scala-maven-plugin:3.2.2:compile (default) on project yisou-spark-streaming-kafka-0-10_2.11: wrap: org.apache.commons.exec.ExecuteException: Process exited with an error: 1 (Exit value: 1)
at org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:216)
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:116)
at org.apache.maven.lifecycle.internal.LifecycleModuleBuilder.buildProject(LifecycleModuleBuilder.java:80)
at org.apache.maven.lifecycle.internal.builder.singlethreaded.SingleThreadedBuilder.build(SingleThreadedBuilder.java:51)
at org.apache.maven.lifecycle.internal.LifecycleStarter.execute(LifecycleStarter.java:128)
at org.apache.maven.DefaultMaven.doExecute(DefaultMaven.java:307)
at org.apache.maven.DefaultMaven.doExecute(DefaultMaven.java:193)
at org.apache.maven.DefaultMaven.execute(DefaultMaven.java:106)
at org.apache.maven.cli.MavenCli.execute(MavenCli.java:862)
at org.apache.maven.cli.MavenCli.doMain(MavenCli.java:286)
at org.apache.maven.cli.MavenCli.main(MavenCli.java:197)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:497)
at org.codehaus.plexus.classworlds.launcher.Launcher.launchEnhanced(Launcher.java:289)
at org.codehaus.plexus.classworlds.launcher.Launcher.launch(Launcher.java:229)
at org.codehaus.plexus.classworlds.launcher.Launcher.mainWithExitCode(Launcher.java:415)
at org.codehaus.plexus.classworlds.launcher.Launcher.main(Launcher.java:356)
Caused by: org.apache.maven.plugin.MojoExecutionException: wrap: org.apache.commons.exec.ExecuteException: Process exited with an error: 1 (Exit value: 1)
at scala_maven.ScalaMojoSupport.execute(ScalaMojoSupport.java:490)
at org.apache.maven.plugin.DefaultBuildPluginManager.executeMojo(DefaultBuildPluginManager.java:134)
at org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:208)
... 20 more
走了許多彎路之后(如修改scala版本號(hào)、更換maven-scala-plugin、完全復(fù)制源碼的pom等),最后意外發(fā)現(xiàn)pom中去掉
guava的exclusion就沒(méi)問(wèn)題了。
會(huì)報(bào)錯(cuò)的pom:
<dependency>
<groupId>org.apache.spark</groupId>
<artifactId>spark-core_${scala.binary.version}</artifactId>
<version>2.1.1</version>
<type>test-jar</type>
<scope>provided</scope>
<exclusions>
<exclusion>
<artifactId>guava</artifactId>
<groupId>com.google.guava</groupId>
</exclusion>
</exclusions>
</dependency>
能正常運(yùn)行的pom:
<dependency>
<groupId>org.apache.spark</groupId>
<artifactId>spark-core_${scala.binary.version}</artifactId>
<version>2.1.1</version>
<type>test-jar</type>
<scope>provided</scope>
</dependency>
為什么加了exclusion guava就編譯報(bào)錯(cuò)了呢,如果是exclusion 其他的artifactId并沒(méi)有此問(wèn)題。spark-streaming-kafka-0-10_2.11源碼中并沒(méi)有使用guava的類。
我也暫時(shí)沒(méi)查出原因,在此提醒遇到類似問(wèn)題的朋友,多從pom配置而不是代碼入手,特別注意guava的exclusion很可能會(huì)造成此問(wèn)題。