将软件版本附加到JAR文件名

时间:2009-10-23 10:37:55

标签: java netbeans ant

我想附加一个Netbeans项目的输出JAR文件名,其中包含一些版本号:类似于1.0,2.0b或甚至是Subversion版本号。不过,我似乎无法找到任何相关信息。我也不确定这是否是构建系统(Ant)的责任,或者IDE(Netbeans)是否可以委派该过程。是否有一种集中,干净的方式来做到这一点?

5 个答案:

答案 0 :(得分:6)

IMO,这是构建系统的责任,而不是IDE的责任。让我以其他方式说:不要依赖你的IDE来构建你的项目,使用构建工具。在开发过程中使用IDE很好但是依赖于IDE来构建项目并不是一件好事(如果你明天改变你的IDE会怎么样,如果你想在没有那个IDE的另一台机器/操作系统上构建项目怎么办,如果你想要怎么做?如果你想自动化你的构建,如果有人想要构建那个项目并且没有那个IDE等等,那么如何在无头机器上构建你的项目。真的,这就是构建系统的用途。

现在,关于您的初始请求,有plenty ways to add a version number。其中之一是使用Ant的 BuildNumber 任务:

  

这是一项基本任务,可用于跟踪内部版本号。

     

它将首先尝试从文件中读取内部版本号(默认情况下,当前目录中的build.number),然后将属性build.number设置为读入的值(或者设置为0,如果没有这样的话值)。然后它会将数字增加1并将其写回文件。 (如果您需要更好地控制属性名称或数字格式等内容,请参阅PropertyFile任务。)

使用它,例如:

  <target name="jar" depends="compile">

     <property name="version.num" value="1.00"/>
     <buildnumber file="build.num"/>

      <jar destfile="foo-${version.num}-b${build.number}.jar"
           basedir="."
           includes="**/*.class"
      />
  </target>

或者你确实add subversion revision number。一个简单的方法是安装SVNAnt任务并使用the status task

  <target name="revisionnumber">

     <!-- get the svn revision number -->
     <svn>
        <status path="application.cfm" revisionProperty="svn.revision" />
     </svn>

     <echo>Sandbox Revision: ${svn.revision}</echo>

  </target>

最后,另一种选择是使用Maven而不是Ant,它具有cetnar所指出的内置版本管理功能。

答案 1 :(得分:5)

我不确定这是不是最好的方法,但是我们将它放在MANIFEST.MF文件中:

Implementation-Version: 2.0b

我们可以通过编程方式获得此值:

String version_num =  this.getClass().getPackage().getImplementationVersion();

答案 2 :(得分:0)

默认为Maven。即使您想要将jar文件命名为更详细的信息,也可以使用build number plugin

修改
在开始时我误解了你的问题所以后面的部分涉及在jar文件中添加这些信息。

您可以creating manifest file自行完成。在Maven中,您可以通过additional configuration调整创建清单文件的过程。我(我敢肯定)在Ant中应该具有相似的功能。

答案 3 :(得分:0)

如果您想使用工具来处理构建,那么有许多内容,例如CruiseControl,这是基于ANT的,并且与您的源代码控件有很深的集成。

我用它来自动递增内部版本号,并将其用作jar版本号的最后一位数字,例如: 1.4.168,其中168是内部版本号。我正准备让它在使用内部版本号获取之前将标签放入CVS中,这样我就知道jar中的代码到底是什么。

答案 4 :(得分:0)

你可以使用maven作为vesion并从pom中读取它。

阅读这篇文章: 嵌入maven版本号 在 http://happygiraffe.net/blog/2008/10/01/embedding-the-maven-version-number/