在 Java 程序中使用变更集编号



我正在使用Mercurial HG对我的项目进行版本控制。为了使我的构建/编译程序中的版本号保持最新,我正在使用这种方法。我已经修改了构建.xml以覆盖预定义的目标。

<target name="-pre-compile">
    <!-- getting the version in a fancy format -->
    <exec executable="hg" outputproperty="version.mercurial">
       <arg value="parent"/>
       <arg value="--template"/>
       <arg value="{latesttag}.{rev}-{branch}-{node|short}"/>
    </exec>
    <echo level="warning">Version ${version.mercurial}</echo>
    <manifest file="${manifest.file}" mode="update">
       <attribute name="Implementation-Version" value="${version.mercurial}"/>
   </manifest>
</target>

** 注意hg.exe在我的类路径中。

为了检索版本属性,我在主类中使用以下代码片段

String version = Main.class.getPackage().getImplementationVersion();

当我构建项目并使用此java -jar myproject.jar运行它时,版本号是正确的,从那时起一切都很好。

但是当我在我的 IDE 中运行它时,版本字符串 ist null,所以清单文件不会被读取。因此,这让我思考这种方法是否有效,或者是否有另一种甚至更简单的方法来保持版本号最新?

编辑:有没有更复杂的方法将版本号包含在您的程序中?

请考虑使用 output 属性来代替 Ant 的<exec ..>任务来编写属性文件。 然后,可以使用 <properties file="..."> 方法在 Ant 中读取它,并且在 IDE 中运行时可以像普通属性文件一样加载它。

对您没有为此使用关键字扩展有好处。 在DVCS世界中,这是一个可怕的解决方案。

相关内容

  • 没有找到相关文章

最新更新