2009-10-23 69 views
4

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

回答

6

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

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

这是一个可以用来追踪建立数字的基本任务。

它将首先尝试从文件(默认情况下,在当前目录下的build.number)中读取构建号,然后将属性build.number设置为读入的值(如果不是这样的价值)。然后它会将数字加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代替蚂蚁它有一个内置的版本管理功能,通过cetnar指出。

+0

非常好,非常感谢! – 2009-10-23 13:03:46

5

我不知道这是否是最好的方式,但我们把它放在MANIFEST.MF文件是这样的:

Implementation-Version: 2.0b 

我们可以通过编程方式获取此值是这样的:

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

谢谢,这将是巨大的以编程方式访问的版本号。 – 2009-10-23 13:02:21

0

那么默认由Maven完成。即使你想给你的jar文件命名更详细的信息,你也可以使用build number plugin

编辑
在begining我误解了你的问题,所以接下来的部分涉及到添加jar文件这里面的信息。

你可以自己做creating manifest file。在Maven中,您可以通过additional configuration来调整创建清单文件的过程。我认为(我敢肯定)在Ant中应该是类似的功能。

0

如果您觉得使用工具来处理您的构建,那么有很多关于如CruiseControl,这是基于ANT并与您的源代码控制有很深的集成。

我使用它来自动递增内部版本号,并将其用作我的版本号中的最后一个数字,例如: 1.4.168,其中168是内部版本号。我正准备在编译前用CVS将标签放入CVS中,以便我确切地知道jar中的代码。