huikai

生于忧患,死于安乐


MACOS中maven打包异常

maven javadoc

问题

  1. $ mvn clean deploy -Prelease
  2. ...
  3. [WARNING] Error injecting: org.apache.maven.plugin.javadoc.JavadocJar
  4. java.lang.ExceptionInInitializerError
  5. at org.apache.maven.plugin.javadoc.AbstractJavadocMojo.<clinit>(AbstractJavadocMojo.java:190)
  6. at java.base/jdk.internal.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
  7. at java.base/jdk.internal.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:62)
  8. at java.base/jdk.internal.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)
  9. at java.base/java.lang.reflect.Constructor.newInstance(Constructor.java:488)
  10. at com.google.inject.internal.DefaultConstructionProxyFactory$1.newInstance(DefaultConstructionProxyFactory.java:86)
  11. at com.google.inject.internal.ConstructorInjector.provision(ConstructorInjector.java:105)
  12. at com.google.inject.internal.ConstructorInjector.access$000(ConstructorInjector.java:32)
  13. at com.google.inject.internal.ConstructorInjector$1.call(ConstructorInjector.java:89)
  14. at com.google.inject.internal.ProvisionListenerStackCallback$Provision.provision(ProvisionListenerStackCallback.java:115)
  15. at com.google.inject.internal.ProvisionListenerStackCallback$Provision.provision(ProvisionListenerStackCallback.java:133)
  16. at com.google.inject.internal.ProvisionListenerStackCallback.provision(ProvisionListenerStackCallback.java:68)
  17. at com.google.inject.internal.ConstructorInjector.construct(ConstructorInjector.java:87)
  18. at com.google.inject.internal.ConstructorBindingImpl$Factory.get(ConstructorBindingImpl.java:267)
  19. at com.google.inject.internal.InjectorImpl$2$1.call(InjectorImpl.java:1016)
  20. at com.google.inject.internal.InjectorImpl.callInContext(InjectorImpl.java:1103)
  21. at com.google.inject.internal.InjectorImpl$2.get(InjectorImpl.java:1012)
  22. at com.google.inject.internal.InjectorImpl.getInstance(InjectorImpl.java:1051)
  23. at org.eclipse.sisu.space.AbstractDeferredClass.get(AbstractDeferredClass.java:48)
  24. at com.google.inject.internal.ProviderInternalFactory.provision(ProviderInternalFactory.java:81)
  25. at com.google.inject.internal.InternalFactoryToInitializableAdapter.provision(InternalFactoryToInitializableAdapter.java:53)
  26. at com.google.inject.internal.ProviderInternalFactory$1.call(ProviderInternalFactory.java:65)
  27. at com.google.inject.internal.ProvisionListenerStackCallback$Provision.provision(ProvisionListenerStackCallback.java:115)
  28. at org.eclipse.sisu.bean.BeanScheduler$Activator.onProvision(BeanScheduler.java:176)
  29. at com.google.inject.internal.ProvisionListenerStackCallback$Provision.provision(ProvisionListenerStackCallback.java:126)
  30. at com.google.inject.internal.ProvisionListenerStackCallback.provision(ProvisionListenerStackCallback.java:68)
  31. at com.google.inject.internal.ProviderInternalFactory.circularGet(ProviderInternalFactory.java:63)
  32. at com.google.inject.internal.InternalFactoryToInitializableAdapter.get(InternalFactoryToInitializableAdapter.java:45)
  33. at com.google.inject.internal.InjectorImpl$2$1.call(InjectorImpl.java:1016)
  34. at com.google.inject.internal.InjectorImpl.callInContext(InjectorImpl.java:1092)
  35. at com.google.inject.internal.InjectorImpl$2.get(InjectorImpl.java:1012)
  36. at org.eclipse.sisu.inject.Guice4$1.get(Guice4.java:162)
  37. at org.eclipse.sisu.inject.LazyBeanEntry.getValue(LazyBeanEntry.java:81)
  38. at org.eclipse.sisu.plexus.LazyPlexusBean.getValue(LazyPlexusBean.java:51)
  39. at org.codehaus.plexus.DefaultPlexusContainer.lookup(DefaultPlexusContainer.java:263)
  40. at org.codehaus.plexus.DefaultPlexusContainer.lookup(DefaultPlexusContainer.java:255)
  41. at org.apache.maven.plugin.internal.DefaultMavenPluginManager.getConfiguredMojo(DefaultMavenPluginManager.java:517)
  42. at org.apache.maven.plugin.DefaultBuildPluginManager.executeMojo(DefaultBuildPluginManager.java:121)
  43. at org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:207)
  44. at org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:153)
  45. at org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:145)
  46. at org.apache.maven.lifecycle.internal.LifecycleModuleBuilder.buildProject(LifecycleModuleBuilder.java:116)
  47. at org.apache.maven.lifecycle.internal.LifecycleModuleBuilder.buildProject(LifecycleModuleBuilder.java:80)
  48. at org.apache.maven.lifecycle.internal.builder.singlethreaded.SingleThreadedBuilder.build(SingleThreadedBuilder.java:51)
  49. at org.apache.maven.lifecycle.internal.LifecycleStarter.execute(LifecycleStarter.java:128)
  50. at org.apache.maven.DefaultMaven.doExecute(DefaultMaven.java:307)
  51. at org.apache.maven.DefaultMaven.doExecute(DefaultMaven.java:193)
  52. at org.apache.maven.DefaultMaven.execute(DefaultMaven.java:106)
  53. at org.apache.maven.cli.MavenCli.execute(MavenCli.java:863)
  54. at org.apache.maven.cli.MavenCli.doMain(MavenCli.java:288)
  55. at org.apache.maven.cli.MavenCli.main(MavenCli.java:199)
  56. at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
  57. at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
  58. at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
  59. at java.base/java.lang.reflect.Method.invoke(Method.java:564)
  60. at org.codehaus.plexus.classworlds.launcher.Launcher.launchEnhanced(Launcher.java:289)
  61. at org.codehaus.plexus.classworlds.launcher.Launcher.launch(Launcher.java:229)
  62. at org.codehaus.plexus.classworlds.launcher.Launcher.mainWithExitCode(Launcher.java:415)
  63. at org.codehaus.plexus.classworlds.launcher.Launcher.main(Launcher.java:356)
  64. Caused by: java.lang.StringIndexOutOfBoundsException: begin 0, end 3, length 1
  65. at java.base/java.lang.String.checkBoundsBeginEnd(String.java:3116)
  66. at java.base/java.lang.String.substring(String.java:1885)
  67. at org.apache.commons.lang.SystemUtils.getJavaVersionAsFloat(SystemUtils.java:1133)
  68. at org.apache.commons.lang.SystemUtils.<clinit>(SystemUtils.java:818)
  69. ... 59 more
  70. [INFO] ------------------------------------------------------------------------
  71. [INFO] BUILD FAILURE
  72. [INFO] ------------------------------------------------------------------------
  73. [INFO] Total time: 1.976 s
  74. [INFO] Finished at: 2017-10-14T12:03:44+08:00
  75. [INFO] Final Memory: 13M/44M
  76. [INFO] ------------------------------------------------------------------------
  77. [ERROR] Failed to execute goal org.apache.maven.plugins:maven-javadoc-plugin:2.9.1:jar (attach-javadocs) on project common-base: Execution attach-javadocs of goal org.apache.maven.plugins:maven-javadoc-plugin:2.9.1:jar failed: An API incompatibility was encountered while executing org.apache.maven.plugins:maven-javadoc-plugin:2.9.1:jar: java.lang.ExceptionInInitializerError: null
  78. [ERROR] -----------------------------------------------------
  79. [ERROR] realm = plugin>org.apache.maven.plugins:maven-javadoc-plugin:2.9.1
  80. ...

原因

由于使用了jdk9,java之前版本使用了jdk1.{x}这种风格,但是到9以后却使用了jdk{x}这种风格,导致maven javadoc插件不兼容导致

解决方案

如果mac中安装了之前版本jdk如jdk1.8,可以临时指定JAVA_HOME变量来让maven使用之前版本的java
export JAVA_HOME=/Library/Java/JavaVirtualMachines/jdk1.8.0_121.jdk/Contents/Home/

使用maven release插件发布版本时git仓库中项目版本未升级

原因

maven release的默认版本较低,指定较高版本即可

解决方案

在执行mvn release:prepare 命令时指定release插件的版本,经测试2.5.3正常



 Eclipse问题 GPG常用操作