【问题标题】:Get dynamically build number of Intellij IDEA (maven)动态获取 Intellij IDEA (maven) 的内部版本号
【发布时间】:2020-03-02 06:31:41
【问题描述】:

我正在使用 maven 在 Intellij IDEA 上构建和运行我的项目。

出于跟踪目的,我希望能够将 VCS/Localhistory 上关联的内部版本号直接获取/获取到我的 java 代码中。如果我能够创建自己的并在本地历史记录中设置内部版本号,而不是获取编号,那应该没问题。

就像你在这张照片上看到的那样,我想要这样的 6826bed7 或 40cfe86c:


public static void main(...) {
    // Stuff like this
    String buildNumber = IntellijInternalApi.getThisBuildNumber(); 
    // this should print 6826bed7 in my example
    System.out.println(builNumber); 
}

有什么想法或解决方案吗?

【问题讨论】:

    标签: java maven intellij-idea build


    【解决方案1】:

    算了吧,1) 很可能你不想在你的应用程序类路径中包含 intellij api 2)您在运行时没有 git 信息,这是您的工作副本的属性,而不是二进制分发。

    您必须在构建阶段创建此信息,然后写入属性文件,然后只需读取值。您可以使用git rev-parse HEADgit decribe 使用maven exec-plugin 来执行此操作,或者使用maven-git-commit-id-plugin

    其实你的问题是Injecting current git commit id into Java webapp的重复

    【讨论】:

    • 我不想获取最后一次提交 ID。 Intellij IDEA 使用他自己的 VCS 和内部版本号,这就是我要获取的号码/标识符。我对提交 ID 不感兴趣,因为我多次运行我的应用程序而没有提交。所以你没有回答这个问题,诀窍不是我要找的。顺便说一句,我已经知道这种可能性,这不是我想要的。
    • 我不清楚你想得到什么。 IDEA 没有自己的 VCS。可能你的意思是当地历史?屏幕截图上的 ID(6226bed7 和 40cfe86c) - 是 git 提交哈希,而不是内部版本号。另外,我不明白您要解决什么问题,看起来像是 X-Y 问题。无论如何,你不能在你的 maven pom 中不依赖它来使用 IDEA api。在 99.9% 的情况下,这不是您想要的,除非您创建自己的插件或 IDE
    • 是的,我指的是地方历史。不,这些 id 是 Intellij 内置 id,在每次执行时创建。我对获取提交哈希或与 git 相关的任何内容不感兴趣。我在运行时需要本地历史版本号(IDEA 生成),因为我在运行期间保存了一些文件,我需要参考保存这些文件的版本。使用 IDEA api 是一个想法,我没有说这是我的问题的解决方案。但我的问题是关于获取这些与我的 git 版本无关的 id。 IDEA 不会在每次运行时都提交我的项目,对吧?自己的插件可能是一个解决方案。
    猜你喜欢
    • 2017-05-05
    • 2014-10-28
    • 1970-01-01
    • 2014-05-06
    • 2023-04-04
    • 1970-01-01
    • 2016-06-13
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多