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

pha*_*99w 4 java ant netbeans

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

Pas*_*ent 6

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

现在,关于您的初始请求,有很多方法可以添加版本号.其中之一是使用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>
Run Code Online (Sandbox Code Playgroud)

或者您确实可以添加subversion版本号.一个简单的方法是安装SVNAnt任务并使用状态任务:

  <target name="revisionnumber">

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

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

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

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


use*_*371 5

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

Implementation-Version: 2.0b
Run Code Online (Sandbox Code Playgroud)

我们可以这样以编程方式获取此值:

String version_num =  this.getClass().getPackage().getImplementationVersion();
Run Code Online (Sandbox Code Playgroud)