eclipse中maven的run as打war包失败的问题

时间:2024-09-29 12:04:02

场景一:

由于某些原因,有的时候需要暂时在断网的情况下,或者更标准的说,是在连不上公司的maven公有仓库的情况下打包。

很长一段时间,我打包都是在eclipse中用run as在线打包,直到前不久一次连不上公有仓库时打包出错,具体的错误因为某些原因,暂时无法重现,也就无法截图。

后来我的解决办法是,在maven的settings.xml文件中加入离线配置,如下图的

eclipse中maven的run as打war包失败的问题

<offline>true</offline>

这个配置默认是没有的,没有的情况下默认是fasle.

为了验证更改有效,我特意拔去了网线打包,结果果然成功。

但是有些郁闷的是,我无法断定是否是eclipse的问题,就如上图一样,我再把这个配置注释掉以后,再次打包却也开始屡屡成功,因此本想把之前的错误截个图都无法实现。

但可以肯定的是,当我没有更改这个配置之前,凡离线打包,屡试屡败,自从改过以后,虽然又注释了,但是再离线打包,都是屡试屡成。

因此,如果有人遇到这种需要离线打包却又不成功的情况,可以尝试一下这个方法,或许也就成功了。

场景二:

最近我的eclipse出了很多毛病,重装了多次依旧没有解决这些问题,例如编译突然变得特别慢,常常在更改代码以后重启tomcat不再自动编译(有配置的情况下),还有就是很多项目依赖的jar包,maven不会自动加载,导致需要force update。

也正是因为这个问题,导致我打包过程中报错如下:

[ERROR] Failed to execute goal org.apache.maven.plugins:maven-compiler-plugin:3.1:compile (default-compile) on project pbossvisual: Compilation failure: Compilation failure:
[ERROR] /D:/eclipseWorkspace1/pbossvisual1/src/main/java/com/cmsz/pbossvisual/alarmset/model/AlarmData.java:[1,1] 非法字符: \65279
[ERROR] /D:/eclipseWorkspace1/pbossvisual1/src/main/java/com/cmsz/pbossvisual/alarmset/model/AlarmData.java:[1,10] 需要class, interface或enum
[ERROR] -> [Help 1]
org.apache.maven.lifecycle.LifecycleExecutionException: Failed to execute goal org.apache.maven.plugins:maven-compiler-plugin:3.1:compile (default-compile) on project pbossvisual: Compilation failure
    at org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:212)
    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:120)
    at org.apache.maven.DefaultMaven.doExecute(DefaultMaven.java:355)
    at org.apache.maven.DefaultMaven.execute(DefaultMaven.java:155)
    at org.apache.maven.cli.MavenCli.execute(MavenCli.java:584)
    at org.apache.maven.cli.MavenCli.doMain(MavenCli.java:216)
    at org.apache.maven.cli.MavenCli.main(MavenCli.java:160)
    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:606)
    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.compiler.CompilationFailureException: Compilation failure
    at org.apache.maven.plugin.compiler.AbstractCompilerMojo.execute(AbstractCompilerMojo.java:858)
    at org.apache.maven.plugin.compiler.CompilerMojo.execute(CompilerMojo.java:129)
    at org.apache.maven.plugin.DefaultBuildPluginManager.executeMojo(DefaultBuildPluginManager.java:132)
    at org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:208)
    ... 19 more
[ERROR]
[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

对于这个错,我一开始也有点丈二和尚摸不着头脑,但是查了若干资料后,再在eclipse中乱点了一通后终于发现问题所在。

我发现,正常情况下右键项目的build path,会是如下图所示:

eclipse中maven的run as打war包失败的问题

而这种打包失败的情况下,build path打开后确实如下图所示:

eclipse中maven的run as打war包失败的问题

可以看出图2比图1少了一行,而正是这一行导致打包失败。

因为少了这一行,maven打包时就无法找到相应的依赖包,从而出现了如上所示的错误,于是我手动add,如下图:

eclipse中maven的run as打war包失败的问题

eclipse中maven的run as打war包失败的问题

之后再次打包便没有了之前的问题,经过几次尝试,结果都是和料想一样,若有人遇到类似的情况,也不妨一试。