jgitver插件,在pom中获取版本

时间:2017-12-17 10:38:35

标签: git maven jgitver

我使用jgitver library使用Git存储库的状态自动生成semver

我有一个多模块项目,其中模块是相互依赖的,这意味着如果我对一个模块进行更改,那么其他模块应该开始引用已更改模块的新版本。

所有模块都在同一个Git存储库中,因此Git中的任何更改都会更改所有模块的版本。以下是我的项目结构的一个例子

.git   (Common repository)
module1
common-module
pom.xml (Parent POM)

以下是我如何包含依赖模块的示例

<-- POM of module1, includes common-module-->

    <dependency>
        <groupId> com.test</groupId>
        <artifactId>common-module</artifactId>
        <version>1.0.0</version> <!-- version generated by jgitver -->
    </dependency>

由于jgitver生成的版本在module1common-module生成的任何时候都是相同的,因为它们位于同一个Git存储库中,我不想要在所有模块中硬编码版本。好像版本发生了变化,然后我必须手动更改common-module依赖项的所有模块中的版本。

是否有像${project.version}这样的变量可用于引用jgitver生成的当前版本?

我希望将module1配置如下

<dependency>
    <groupId> com.test</groupId>
    <artifactId>common-module</artifactId>
    <version>${JGITVER_GENERATED_VERSION_VARIABLE}</version> <!-- version generated by jgitver -->
</dependency>

2 个答案:

答案 0 :(得分:0)

事实证明,自jgitver.calculated_version发布以来,有一个属性可用于指定计算版本0.2.0-alpha2。但是,自从0.2.0-alpha2版本发布以来,它根本不需要。

想要将计算版本指定为依赖项版本的子模块应该使用project.version。静态值保持为0,当使用maven构建项目时,project.version将被解析为正确的值。

我在面对以下问题Multi module project: Building only a sub module does not resolve versions for deps

后遇到了这个问题 只要项目是从父项构建的,

project.version就可以工作,如果项目是从子模块目录本身构建的,它就不起作用。 project.version解析为0,因此导致错误common-module-0.jar丢失。问题已经关闭,jgitver也应该从子模块开始工作0.2.0-alpha2。但是它不适用于某些版本的maven。

在项目的github页面上,提到maven的最小版本应为3.3.2 Ref:jgitver-maven-plugin requires at least maven-3.3.2 to work correctly.。但是对我来说,jgitver 1.1.4无法与maven 3.3.5一起使用,并且只有在构建子模块时才会继续构建,从而导致错误common-module-0丢失。我可以确认它适用于maven 3.3.9。我开始知道,因为我在两台不同版本的maven上工作。我已将maven更新为当前版本3.5.2,并且它可以从子模块中正常工作。

注意:我的IDE STS 3.8.4/Eclipse Mars.2 (4.5.2)似乎无法从project.version解析计算的项目版本,并尝试解析common-module-0。只有在Eclipse中打开此项目时,它才会得到解决。也许这就是它应该如何运作。

答案 1 :(得分:0)

抱歉,这个问题有点迟了,我以前没看过。

如果您在同一个多模块项目中,则jgitver的使用不应更改声明子模块之间依赖性的方式。即使参加聚会的jgitver,您仍应使用project.version

引用您的子模块

<dependency> <groupId> com.test</groupId> <artifactId>common-module</artifactId> <version>${project.version}</version> <!-- use a reference to the POM model --> </dependency>

对于IDE,问题有所不同,因为它们不太喜欢jgitver的动态行为(至少与Eclipse&Intellij IDEA相同)。 您可以使用配置文件和/或停用来查看有关jgitver IDE usage的Wiki页面;您可以正常使用IDE,但必须委派Maven或gradle正常版本进行发布/部署。

希望有帮助。

-
jgitver

的作者和维护者Matthieu