maven之Jenkins 和 maven-buildnumber-plugin

落叶无声 阅读:21 2024-11-24 20:56:43 评论:0

我正在使用 maven-buildnumber-plugin版本 1.0-beta-4。这在从 Subversion checkout 的项目上工作正常,但在 Jenkins 中失败。

我认为这个问题是由于 Jenkins 以某种方式删除了 .svn 文件夹造成的。

我猜错了。这是我得到的错误:

maven builder waiting 
mavenExecutionResult exceptions not empty 
org.apache.maven.lifecycle.LifecycleExecutionException: Failed to execute goal org.codehaus.mojo:buildnumber-maven-plugin:1.0-beta-4:create (default) on project swift-core: Cannot get the revision information from the scm repository :  
Error! 
    at org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:217) 
    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:319) 
    at org.apache.maven.DefaultMaven.execute(DefaultMaven.java:156) 
    at org.jvnet.hudson.maven3.launcher.Maven3Launcher.main(Maven3Launcher.java:79) 
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) 
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39) 
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25) 
    at java.lang.reflect.Method.invoke(Method.java:597) 
    at org.codehaus.plexus.classworlds.launcher.Launcher.launchStandard(Launcher.java:329) 
    at org.codehaus.plexus.classworlds.launcher.Launcher.launch(Launcher.java:239) 
    at org.jvnet.hudson.maven3.agent.Maven3Main.launch(Maven3Main.java:146) 
    at hudson.maven.Maven3Builder.call(Maven3Builder.java:124) 
    at hudson.maven.Maven3Builder.call(Maven3Builder.java:71) 
    at hudson.remoting.UserRequest.perform(UserRequest.java:114) 
    at hudson.remoting.UserRequest.perform(UserRequest.java:48) 
    at hudson.remoting.Request$2.run(Request.java:270) 
    at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:441) 
    at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:303) 
    at java.util.concurrent.FutureTask.run(FutureTask.java:138) 
    at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:886) 
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:908) 
    at java.lang.Thread.run(Thread.java:619) 
Caused by: org.apache.maven.plugin.MojoExecutionException: Cannot get the revision information from the scm repository :  
Error! 
    at org.codehaus.mojo.build.CreateMojo.getRevision(CreateMojo.java:673) 
    at org.codehaus.mojo.build.CreateMojo.execute(CreateMojo.java:431) 
    at org.apache.maven.plugin.DefaultBuildPluginManager.executeMojo(DefaultBuildPluginManager.java:101) 
    at org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:209) 
    ... 27 more 
Caused by: org.apache.maven.scm.ScmException: Error! 
    at org.codehaus.mojo.build.CreateMojo.checkResult(CreateMojo.java:753) 
    at org.codehaus.mojo.build.CreateMojo.getRevision(CreateMojo.java:648) 
    ... 30 more 

我忽略了这一点:

Provider message: 
The svn command failed. 
Command output: 
/bin/sh: svn: command not found 
 
mojoFailed org.codehaus.mojo:buildnumber-maven-plugin:1.0-beta-4(default) 

机器上没有安装svn客户端,那才是真正的麻烦源。

请您参考如下方法:

错误信息显示命令svn没有安装在构建机器上。您可以使用 javasvn 作为具有此配置的 providerImplementation:

   <plugin> 
    <groupId>org.codehaus.mojo</groupId> 
    <artifactId>buildnumber-maven-plugin</artifactId> 
    <version>1.0</version> 
    <executions> 
      <execution> 
        <phase>validate</phase> 
        <goals> 
          <goal>create</goal> 
        </goals> 
      </execution> 
    </executions> 
    <configuration> 
      <doCheck>true</doCheck> 
      <doUpdate>true</doUpdate> 
      <providerImplementations> 
        <svn>javasvn</svn> 
      </providerImplementations>           
    </configuration> 
  </plugin> 

参见 http://mojo.codehaus.org/buildnumber-maven-plugin/using-svnjava.html

如果您需要一个特定版本的 Subversion(我们在这里仍然使用 1.5),您也可以固定到一个特定版本的 svnkit:

    <dependency> 
        <groupId>org.tmatesoft.svnkit</groupId> 
        <artifactId>svnkit</artifactId> 
        <version>1.2.3.5521</version> 
    </dependency> 


标签:Maven
声明

1.本站遵循行业规范,任何转载的稿件都会明确标注作者和来源;2.本站的原创文章,请转载时务必注明文章作者和来源,不尊重原创的行为我们将追究责任;3.作者投稿可能会经我们编辑修改或补充。

关注我们

一个IT知识分享的公众号