【问题标题】:Appending software version to a JAR filename将软件版本附加到 JAR 文件名
【发布时间】:2009-10-23 21:01:15
【问题描述】:

我想在 Netbeans 项目的输出 JAR 文件名中附加一些版本号:例如 1.0、2.0b 甚至是 Subversion 修订号。不过,我似乎在这方面找不到任何东西。我也不确定这是否是构建系统 (Ant) 的责任,或者 IDE (Netbeans) 是否可以委托该过程。有没有一种集中的、干净的方式来做到这一点?

【问题讨论】:

    标签: java netbeans ant


    【解决方案1】:

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

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

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

    它将首先尝试从文件中读取构建号(默认情况下,当前目录中的 build.number),然后将属性 build.number 设置为读取的值(如果没有,则设置为 0价值)。然后它将数字加一并将其写回文件。 (如果您需要更好地控制属性名称或数字格式等内容,请参阅 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 所指出的那样。

    【讨论】:

      【解决方案2】:

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

      Implementation-Version: 2.0b
      

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

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

      【讨论】:

      • 谢谢,以编程方式访问版本号会很棒。
      【解决方案3】:

      如果您想使用一个工具来处理您的构建,那么有很多关于,例如 CruiseControl,它基于 ANT,并且与您的源代码控制有相当深度的集成。

      我使用它来自动增加内部版本号并将其用作 jar 版本号中的最后一位,例如1.4.168,其中 168 是内部版本号。我正要让它在获取内部版本号之前将标签放入 CVS,以便我确切知道 jar 中的代码。

      【讨论】:

        【解决方案4】:

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

        编辑
        一开始我误解了您的问题,因此以下部分涉及在 jar 文件中添加此信息。

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

        【讨论】:

          【解决方案5】:

          您可以使用 maven 进行 vesion 并从 pom 中读取。

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

          【讨论】:

            猜你喜欢
            • 2023-03-08
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 2013-08-01
            • 1970-01-01
            • 2010-10-03
            • 2018-01-07
            相关资源
            最近更新 更多