【问题标题】:IntelliJ IDEA - can I have automatically incremented build (version) number?IntelliJ IDEA - 我可以自动增加构建(版本)号吗?
【发布时间】:2015-03-25 20:20:18
【问题描述】:

我能否以某种方式设置 IntelliJ 构建过程来预处理 Java 源代码并给我不断递增的构建号?比如:

int myBuildNumber = INTELLI_J_IDEA_MAGIC_WHICH_WILL_INCREMENT_EVERY_BUILD;

【问题讨论】:

  • 有趣的问题。它的解决方案解决了什么问题?
  • 我想不出一个简单的、仅限于 IntelliJ 的解决方案,但是使用 ant 来做到这一点呢?您可以直接从 intelliJ 中触发 ant 任务。这样,该过程可能与 IDE 无关。
  • Petur:没什么——只有我可以问同事他们使用我的工具的哪个版本,我可以告诉他们它是否是最后一个。即使我在放弃之前忘记手动更改版本......下一步将以某种方式将其与修订系统号相关联。但我现在只想要一个快速、肮脏和花哨的数字,比如 125 :)
  • @VitBernatik 有一个专门用于此目的的ant 任务。看看ant.apache.org/manual/Tasks/buildnumber.html
  • @VitBernatik 运气好吗?老实说,我从来没有使用过这个特定的任务,但过去手动做过类似的事情。希望这项任务一切顺利。在属性文件中获得内部版本号后,您应该能够像加载任何其他属性一样加载它。希望对您有所帮助。

标签: java intellij-idea version


【解决方案1】:

好吧,有了 AtomHeartFather 的提示,我明白了。

首先我们需要编写一个 ant xml 文件。该文件将创建存储和递增内部版本号的文件,然后它将查看您的源代码文件${src}/com/yourPath/Main.java 对于变量public static final String BUILD_NUMBER = ".*"; 并将其替换为当前内部版本号

xml 文件如下所示:

<project name="MyProject" default="init" basedir=".">
    <description>
        simple example increment build variable
    </description>
  <!-- set global properties for this build -->
  <property name="src" location="../src"/>

  <target name="init">
    <echo file="myAntOut.txt">My first ant ${src} ${line.separator}</echo>

    <buildnumber/>
    <replaceregexp file="${src}/com/yourPath/Main.java"
               match="public\s+static\s+final\s+String\s+BUILD_NUMBER\s+=\s+&quot;.*&quot;;"
               replace="public static final String BUILD_NUMBER = &quot;${build.number}&quot;;"
               byline="true"
    />

  </target>
</project>

然后在您的 intelliJ(我使用的是 14.0.3)中单击 View-&gt;Tool Windows-&gt;Ant Build。然后+ 并浏览到您的 xml 文件(请注意,您的 xml 使用的当前路径将是该 xml 文件本身的路径 - 而不是 inteliJ 项目 - 因此您可能需要更正 location="../src" 部分,具体取决于您存储的位置xml)。然后您将看到我们的目标init,您可以选择它并单击play 按钮。如果它有效,您将在源代码文件Main.java 中看到BUILD_NUMBER 递增。现在重要的技巧是如何自动生成它:只需右键单击init 并选择Execute on-&gt;Before Compilation。完成:)

【讨论】:

  • 这真是一个很好的答案。向你致敬。
  • 提示:您也可以在构建(发布)包时执行 Ant 文件。只需按照以下步骤操作(假设您已经有了 Artifact):构建 -> 编辑 Artifact -> (Tab) 预处理 -> 运行 Ant target "init" :)
  • 很棒的答案 Vit,为我节省了很多烦恼。如何生成自定义的内部版本号字符串,如 1.1.1 等?
猜你喜欢
  • 2015-12-13
  • 1970-01-01
  • 2011-02-26
  • 1970-01-01
  • 1970-01-01
  • 2013-07-27
  • 2016-11-26
  • 2011-10-10
  • 1970-01-01
相关资源
最近更新 更多