Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Is it possible to use maven buildnumber plugin to generate build number without any scm check?

Getting the following exception while using maven build number plugin. Is it possible to disable SCM check while using the build number plugin? Can we use this plugin to generate build number on non SCM build?

Exception while doing the build:

[ERROR] Failed to execute goal org.codehaus.mojo:buildnumber-maven-plugin:1.0:create (default) on project projectname: Execution default of goal org.codehaus.mojo:buildnumber-maven-plugin:1.0:create failed: The scm url cannot be null. -> [Help 1] org.apache.maven.lifecycle.LifecycleExecutionException: Failed to execute goal org.codehaus.mojo:buildnumber-maven-plugin:1.0:create (default) on project projectname: Execution default of goal org.codehaus.mojo:buildnumber-maven-plugin:1.0:create failed: The scm url cannot be null.     at org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:225)     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.apache.maven.cli.MavenCli.execute(MavenCli.java:534)     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: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.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.PluginExecutionException: Execution default of goal org.codehaus.mojo:buildnumber-maven-plugin:1.0:create failed: The scm url cannot be null.     at org.apache.maven.plugin.DefaultBuildPluginManager.executeMojo(DefaultBuildPluginManager.java:116)     at org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:209)     ... 19 more Caused by: java.lang.NullPointerException: The scm url cannot be null.     at org.apache.maven.scm.manager.AbstractScmManager.makeScmRepository(AbstractScmManager.java:183)     at org.codehaus.mojo.build.CreateMojo.getScmRepository(CreateMojo.java:768)     at org.codehaus.mojo.build.CreateMojo.getRevision(CreateMojo.java:692)     at org.codehaus.mojo.build.CreateMojo.execute(CreateMojo.java:443)     at org.apache.maven.plugin.DefaultBuildPluginManager.executeMojo(DefaultBuildPluginManager.java:107)     ... 20 more 

POM configuration:

<plugin>     <groupId>org.codehaus.mojo</groupId>     <artifactId>buildnumber-maven-plugin</artifactId>     <version>1.0</version>     <executions>     <execution>       <phase>validate</phase>       <goals>     <goal>create</goal>     <goal>create-timestamp</goal>       </goals>     </execution>     </executions>     <configuration>     <buildNumberPropertyName>build.number</buildNumberPropertyName>     <timestampFormat>yyyy-MM-dd HH:mm:ss.SSS z</timestampFormat>     <timestampPropertyName>build.time</timestampPropertyName>     <doCheck>false</doCheck>     <doUpdate>false</doUpdate>     </configuration> </plugin>  <plugin>     <groupId>org.apache.maven.plugins</groupId>     <artifactId>maven-compiler-plugin</artifactId>     <version>2.0.2</version>     <configuration>     <source>1.6</source>     <target>1.6</target>     </configuration> </plugin> <plugin>     <groupId>org.apache.maven.plugins</groupId>     <artifactId>maven-war-plugin</artifactId>     <version>2.1.1</version>     <configuration>     <warname>foodwalaweb</warname>     <!--webResources>         <resource>         <filtering>false</filtering>         <directory>${basedir}/src/main/java</directory>         <includes>         <include>META-INF/persistence.xml</include>         </includes>         </resource>     </webResources-->     <archive>     <manifest>         <addDefaultImplementationEntries>true</addDefaultImplementationEntries>         <addDefaultSpecificationEntries>true</addDefaultSpecificationEntries>     </manifest>     <manifestEntries>         <Build-Number>${buildNumber}</Build-Number>         <Built-Time>${build.time}</Built-Time>     </manifestEntries>     </archive>     </configuration> </plugin> 
like image 463
Joshan George Avatar asked Feb 02 '12 16:02

Joshan George


People also ask

What does buildNumber Maven plugin do?

This plugin works in one of 3 ways: with an SCM, with a sequential build number, or with a timestamp. This will cause the create goal of the buildNumber plugin to be executed during the validate phase. It will first check to see if you have locally modified files, and will fail if there are any.

What is Maven SCM plugin?

The SCM Plugin offers vendor independent access to common scm commands by offering a set of command mappings for the configured scm. Each command is implemented as a goal.

What is build number Maven?

The build number is obtained from scm. You can then place that build number in metadata, which can be accessed from your app, if desired. The mojo also has a couple of extra functions to ensure you get the proper build number. First, your local repository is checked to make sure it is up to date.


1 Answers

Define a dummy SCM and then use buildNumber item to get sequential build number instead of value defined by revisionOnScmFailure property.

pom.xml:

<project ...>      <scm>         <connection>scm:svn:http://127.0.0.1/dummy</connection>         <developerConnection>scm:svn:https://127.0.0.1/dummy</developerConnection>         <tag>HEAD</tag>         <url>http://127.0.0.1/dummy</url>     </scm>      <build>       <plugins>          ...          <plugin>             <groupId>org.codehaus.mojo</groupId>             <artifactId>buildnumber-maven-plugin</artifactId>             <version>1.1</version>             <executions>             <execution>                 <id>buildnumber</id>                 <phase>validate</phase>                 <goals>                 <goal>create</goal>                 </goals>             </execution>             </executions>             <configuration>                 <format>{0,number}</format>                 <items>                 <item>buildNumber</item>                 </items>                                     <doCheck>false</doCheck>                 <doUpdate>false</doUpdate>                 <revisionOnScmFailure>unknownbuild</revisionOnScmFailure>                </configuration>         </plugin>         </plugins>     </build> </project> 
like image 184
Wade Avatar answered Sep 21 '22 08:09

Wade