标签: buildnumber-maven-plugin

是否可以使用maven buildnumber插件生成内部版本号而无需任何scm检查?

使用maven内部版本号插件时获得以下异常.是否可以在使用内部版本号插件时禁用SCM检查?我们可以使用此插件在非SCM构建上生成内部版本号吗?

在进行构建时出现异常:

[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) …
Run Code Online (Sandbox Code Playgroud)

maven build-numbers buildnumber-maven-plugin

29
推荐指数
4
解决办法
4万
查看次数

Maven构建号码插件,如何在文件中保存构建号码?

我有一个使用Spring Framework和Git的Java项目,我想显示一个内部版本号.我找到了Build Number Maven插件.使用Git,内部版本号是一个Git哈希.我不喜欢这个,我认为约会更有表现力.

我发现这篇优秀的博客文章解释了如何使用不同的SVN和Git配置文件编号插件.由于我只使用Git,而不是创建新的配置文件,我只是在我的构建标记中复制了插件部分.

当我运行"mvn package"时,它告诉我:

[INFO] --- buildnumber-maven-plugin:1.0:create (default) @ sherd ---
[INFO] Storing buildNumber: 2011-08-04_21-48_stivlo at timestamp: 1312487296631
Run Code Online (Sandbox Code Playgroud)

哪个看起来不错,但我想知道,它存放在哪里?"git status"没有检测到任何新文件,它似乎不在目标/中(目标/在我的.gitignore中).

也许我要更改配置以将内部版本号存储在文件中?如何使用内部版本号值?


感谢Michael-O的提示,我在Maven入门指南中阅读了有关如何过滤资源文件的章节.我在src/main/resources/properties/application.properties中创建了一个文件application.properties,其中包含以下内容:

# application properties
application.name=${pom.name}
application.version=${pom.version}
application.build=${buildNumber}
Run Code Online (Sandbox Code Playgroud)

我在构建部分中添加了以下XML代码段:

<resources>
    <resource>
        <directory>src/main/resources/properties</directory>
        <filtering>true</filtering>
    </resource>
</resources>
Run Code Online (Sandbox Code Playgroud)

现在,当我从命令行"mvn package"调用时,此属性文件将保存在target/classes/properties/application.properties中,例如具有以下内容:

# application properties
application.name=Sherd Control Panel
application.version=1.0.1-SNAPSHOT
application.build=2011-08-05_05-55_stivlo
Run Code Online (Sandbox Code Playgroud)

从命令行一切正常,但是,叹息,m2eclipse给出了Build错误:

05/08/11 6.05.03 CEST: Build errors for obliquid-cp; 
org.apache.maven.lifecycle.LifecycleExecutionException: Failed to execute goal
org.codehaus.mojo:buildnumber-maven-plugin:1.0:create (default) on project 
sherd: Cannot get the branch information from …
Run Code Online (Sandbox Code Playgroud)

build maven-plugin maven buildnumber-maven-plugin

20
推荐指数
2
解决办法
3万
查看次数

Maven Buildnumber插件 - Git

Maven Buildnumber插件似乎不适用于GIT.暂时有解决方法吗?我最近从SVN切换到GIT并发现它是一个简单的过渡,但这是我目前唯一没有工作的东西.

沃尔特

git maven-2 maven-scm maven buildnumber-maven-plugin

18
推荐指数
4
解决办法
2万
查看次数

我可以使用buildnumber-maven-plugin设置项目版本吗?

我正在尝试将svn.revision添加到项目版本作为内部版本号,但似乎无法这样做.我的jar有正确的名称durin打包,但它安装在我的本地存储库中,就好像$ {buildNumber}在设置版本时未定义.

我得到foo-1.0.0-SNAPSHOT- $ {buildNumber}而不是foo-1.0.0-SNAPSHOT- 304

知道我做错了什么或者在项目版本中添加修改是个坏主意吗?谢谢您的帮助.

<project>
  ...
  <version>1.0.0-${release.identifier}-${buildNumber}</version>
  <properties>
    <release.identifier>SNAPSHOT</release.identifier>
  </properties>
  ...
  <build>
    <plugins>
      <plugin>
        <groupId>org.codehaus.mojo</groupId>
        <artifactId>buildnumber-maven-plugin</artifactId>
        <executions>
          <execution>
            <id>useLastCommittedRevision</id>
            <goals>
              <goal>create</goal>
            </goals>
            <configuration>
              <useLastCommittedRevision>true</useLastCommittedRevision>
            </configuration>
          </execution>
        </executions>
      </plugin>
    </plugins>
  ...
</project>
Run Code Online (Sandbox Code Playgroud)

maven-2 maven-plugin buildnumber-maven-plugin

13
推荐指数
2
解决办法
2万
查看次数

如何访问maven multimodule项目中其他模块pom中定义的属性

在ABC的pom我已经将属性定义为abc,其中ABC是模块.现在我想在ADF模块的pom中访问该属性.

<properties>
<A.B.C>${buildNumber}</A.B.C>
</properties>

<plugin>
            <groupId>org.codehaus.mojo</groupId>
            <artifactId>buildnumber-maven-plugin</artifactId>
            <version>1.3</version>
            <executions>
                <execution>
                <id>buildnumber</id>
                    <phase>validate</phase>
                    <goals>
                        <goal>create</goal>
                    </goals>
                </execution>
            </executions>
            <configuration>
            <timestampFormat>{0,date,dd-MM-yyyy HH:mm:ss}</timestampFormat>
            <doCheck>false</doCheck>
            <doUpdate>false</doUpdate>
            <providerImplementations>
                <svn>javasvn</svn>
            </providerImplementations>
            <revisiononscmfailure>

                    <!-- 71 Generate sequence build number based on: 72 build number and 
                        timestamp 73 -->

                    <format>Build: #{0} ({1,date})</format>

                    <items>

                        <item>buildNumber\d*</item>

                        <item>timestamp</item>

                    </items>

                </revisiononscmfailure>
        </configuration>
        <dependencies>
            <dependency>
                <groupId>com.google.code.maven-scm-provider-svnjava</groupId>
                <artifactId>maven-scm-provider-svnjava</artifactId>
                <version>2.1.1</version>
            </dependency>
            <dependency>
                <groupId>org.tmatesoft.svnkit</groupId>
                <artifactId>svnkit</artifactId>
                <version>1.8.5</version>
            </dependency>
        </dependencies>

        </plugin>
Run Code Online (Sandbox Code Playgroud)

我在$ ADF模块的pom中使用$ {ABC}作为版本的值.

<dependency>
        <groupId></groupId>
        <artifactId></artifactId>
        <version>${A.B.C}</version>
        <type>bundle</type>
    </dependency>
Run Code Online (Sandbox Code Playgroud)

所以它给了我错误:bundle必须是有效的版本,但是$ {ABC}.

编辑:

或者我可以在某种程度上使用C模块的版本,因为我已经定义:

<version>${A.B.C}</version> 
Run Code Online (Sandbox Code Playgroud)

java pom.xml maven buildnumber-maven-plugin

11
推荐指数
1
解决办法
2万
查看次数

maven-buildnumber-plugin svn修订版仅在不使用格式时可用

在使用maven-buildnumber-plugin 1.0 beta 4时,似乎我可以获得svn修订版,除非我<format>在配置中使用标记.一旦我使用<format><item>buildnumber</item>标记,我得到一个自动递增的数字,但它不再对应于svn修订版,我不知道如何取回它.有没有办法在s内使用svn修订号<format>?文档不是很清楚.

java build-automation maven-2 buildnumber-maven-plugin

9
推荐指数
1
解决办法
6008
查看次数

如何将SVN修订号注入JAR?

我希望我的JAR/WAR应用程序知道它的源代码的SVN版本号是什么.我希望稍后为网页底部的Web最终用户呈现此修订号,等等.

是否有任何现有的Maven插件可以自动化该过程?我认为插件必须从中收集信息svn并保存到某些文件中,例如src/resources/revision.txt.

java svn maven-2 buildnumber-maven-plugin

7
推荐指数
1
解决办法
4721
查看次数

通过Maven将Mercurial工作目录变更集ID(例如(838cb9c0367e))注入属性文件中?

我们使用Maven作为构建版本,使用Mercurial作为我们的变更集.虽然我们的软件已经处理了主要版本,但我们真的希望能够知道Mercurial变更集用于构建运行我们软件的任何服务器.

有没有人知道在Maven中获取Mercurial中工作目录的变更集并将其放入属性文件中的方法,以便我们可以在我们的应用程序中的某个地方显示它,当sys管理员对当前运行的版本进行"健全性检查"时?

versioning mercurial maven buildnumber-maven-plugin

6
推荐指数
2
解决办法
1740
查看次数

多模块项目中的Maven属性将重置为默认值

我对多模块项目中的属性有疑问.

考虑以下3级项目结构:

project
+- pom.xml (packaging: pom)        //referred to as super-pom
+- module_group
   +- pom.xml (packaging: pom)     //referred to as group-pom
   +- module
      +-pom.xml (packaging: jar)   //referred to as module-pom
Run Code Online (Sandbox Code Playgroud)

在super-pom中,我定义了一个属性修订版,它获取了默认值"unknown".

另外,我声明并使用buildnumber-maven-plugin配置为获取svn修订版并将其放入属性修订版中.

接下来我配置将该maven-jar-plugin属性写入清单.

在模块-pom我声明使用buildnumber-maven-plugin实际执行的.


这一切都在直接构建模块时起作用,即仅执行模块pom.清单包含由buildnumber-maven-plugin控制台中打印的as 报告的修订.

但是,如果我执行super-pom或group-pom,则将版本的默认值写入清单,尽管buildnumber-maven-plugin执行获取并检索正确的版本(它 在运行之前将其打印到控制台maven-jar-plugin).

所以我觉得我在多模块项目中缺少关于属性继承的东西.

有没有人知道这里有什么问题?或者任何人都可以指出我在这些情况下如何实际处理属性的描述(遗憾的是我还没有设法找到一个好的描述)?

更新

我做了一些研究和一些测试运行与调试输出(-X选项),从我到目前为止发现,我认为我的问题如下:

1)在pom解析期间,pom中使用的属性将替换为它们的值.

考虑这个部分pom:

<!-- declare the property default value -->
<properties>
  <revision>default</revision>
</properties>

...

<!-- use the …
Run Code Online (Sandbox Code Playgroud)

maven-2 maven buildnumber-maven-plugin

5
推荐指数
1
解决办法
1373
查看次数

很高兴通过cmd禁用buildnumber-maven-plugin

我对maven有疑问.如何通过命令行选项禁用buildnumber-maven-plugin.我想在我们的持续集成服务器上运行"mvn test"命令,但是这个cmd失败了,因为它试图构建一个版本并且没有访问我们的vcs(在tag中配置)的权限.因此可以通过cmd选项禁用它,或者只运行测试而不构建新的发行版本?谢谢你的帮助.

plugins build maven buildnumber-maven-plugin

5
推荐指数
1
解决办法
2082
查看次数