Est-il possible d'utiliser le plugin Maven buildnumber pour générer le numéro de compilation sans aucune vérification scm?

obtenir l'exception suivante en utilisant maven build number plugin. Est-il possible de désactiver SCM check tout en utilisant le plugin build number? Pouvons-nous utiliser ce plugin pour générer le nombre de build sur une construction non SCM?

Exception tout en faisant la compilation:

[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

configuration POM:

<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>
22
demandé sur Joshan George 2012-02-02 20:15:13

6 réponses

définir une MCS fictive et ensuite utiliser buildNumber élément pour obtenir le numéro de build séquentiel au lieu de la valeur définie par la propriété revisionOnScmFailure.

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>
24
répondu Richard Huxley 2017-01-12 16:00:04

Avec la version 1.4, les travaux suivants:

<plugin>
    <groupId>org.codehaus.mojo</groupId>
    <artifactId>buildnumber-maven-plugin</artifactId>
    <version>1.4</version>
    <configuration>
        <revisionOnScmFailure>no.scm.config.in.pom</revisionOnScmFailure>
    </configuration>
    <executions>
        <execution>
            <id>create-timestamp-id</id>
            <phase>validate</phase>
            <goals>
                <goal>create-timestamp</goal>
            </goals>
            <configuration>
                <timestampFormat>yyyy-MM-dd HH:mm:ss.S</timestampFormat>
                <timestampPropertyName>myBuildNumberVariable</timestampPropertyName>
                <!-- formats the timestamp all together like 2016-04-04 14:17:05.123 and puts 
                    it in the ${myBuildNumberVariable} buildProperty -->
            </configuration>
        </execution>
    </executions>
</plugin>
4
répondu Alan MacK 2016-04-07 20:25:46

Tout ce que vous devez faire est de placer vos plugins dans la balise pluginManagement

<pluginManagement>
    <plugins>
        <plugin>
            <groupId>org.codehaus.mojo</groupId>
            <artifactId>buildnumber-maven-plugin</artifactId>
            <executions>
                <execution>
                    <phase>validate</phase>
                    <goals>
                        <goal>create</goal>
                    </goals>
                </execution>
            </executions>
            <configuration>
                <doCheck>true</doCheck>
                <doUpdate>true</doUpdate>
            </configuration>
        </plugin>
    </plugins>
</pluginManagement>
3
répondu Bikram 2018-04-09 23:09:09

ce qui suit fonctionnait, si Je ne me trompe pas:

  <plugin>
    <groupId>org.codehaus.mojo</groupId>
    <artifactId>buildnumber-maven-plugin</artifactId>
    <version>1.0-beta-3</version>
    <configuration>
      <buildNumberPropertyName>buildNumber.value</buildNumberPropertyName>
      <timestampPropertyName>buildNumber.timestamp</timestampPropertyName>
      <format>{0,date,yyyyMMdd-HHmm}</format>
      <items>
        <item>timestamp</item>
      </items>
    </configuration>
    <executions>
      <execution>
        <phase>validate</phase>
        <goals>
          <goal>create</goal>
        </goals>
      </execution>
    </executions>
  </plugin>
</plugins>
0
répondu maximdim 2012-02-02 19:32:12

ce dossier de travail pour moi. Peut aider avec juste numéro de version et pas besoin de scm.

<plugin>
            <groupId>org.codehaus.mojo</groupId>
            <artifactId>buildnumber-maven-plugin</artifactId>
            <version>1.4</version>
            <configuration>
             <revisionOnScmFailure>no.scm.config.in.pom
                 </revisionOnScmFailure>
            </configuration>
            <executions>
                <execution>
                    <id>buildnumber</id>
                    <phase>validate</phase>
                    <goals>
                        <goal>create</goal>
                    </goals>
                    <configuration>
                        <format>{0,number}</format>
                        <items>
                            <item>buildNumber</item>
                        </items>
                        <doCheck>false</doCheck>
                        <doUpdate>false</doUpdate>
                        <revisionOnScmFailure>unknownbuild</revisionOnScmFailure>
                    </configuration>
                </execution>
            </executions>
        </plugin>
0
répondu Sumith 2017-05-19 05:33:18

j'ai eu le cas, que je voulais un commitId GIT et un timestamp pour être mis dans les propriétés, les deux en même temps. Cela peut-il être fait?

Bien sûr:

<plugin>
    <groupId>org.codehaus.mojo</groupId>
    <artifactId>buildnumber-maven-plugin</artifactId>
    <version>1.4</version>
    <inherited>false</inherited>
    <executions>
        <execution>
            <id>commitId</id>
            <phase>validate</phase>
            <goals>
                <goal>create</goal>
            </goals>
            <configuration>
                <buildNumberPropertyName>commitId</buildNumberPropertyName>
                <shortRevisionLength>7</shortRevisionLength>
            </configuration>
        </execution>
        <execution>
            <id>buildTimestamp</id>
            <phase>validate</phase>
            <goals>
                <goal>create-timestamp</goal>
            </goals>
            <configuration>
                <timestampPropertyName>buildTimestamp</timestampPropertyName>
            </configuration>
        </execution>
    </executions>
</plugin>
0
répondu pai 2018-08-30 14:37:19