【问题标题】:Custom versioning of Jar in maven pom.xmlmaven pom.xml 中 Jar 的自定义版本控制
【发布时间】:2019-01-14 21:15:45
【问题描述】:

我想在 .m2 中为 maven 项目创建版本控制结构文件夹

以下我在 pom.xml 中所做的更改

<modelVersion>4.0.0</modelVersion>
<groupId>com.XXXXXX.cm</groupId>
<artifactId>state-node</artifactId>
<version>1.5.0/1.0</version>
<packaging>jar</packaging>
<name>state-node</name>

<build>
    <finalName>${project.artifactId}</finalName>
</build

输出:

.m2\repository\com\XXXXXX\cm\state-node\1.5.0\1.0\state-node-1.5.0\1.0.jar

预期输出:

 .m2\repository\com\XXXXXX\cm\state-node\1.5.0\1.0\state-node-1.5.0.jar

1.5.0 是我的依赖版本,1.0 是我的项目版本。 项目要求是,如果我使用依赖项(1.5.0)来构建同一个项目,那么 jar 文件夹结构应该在我的 .m2 文件夹 1.5.0\1.0\state-node-1.5.0.jar 中, 如果我们在我的项目中使用相同版本的依赖项进行一些修改,那么 jar 文件夹结构应该在 .m2 文件夹 1.5.0\2.0\state-node-1.5.0.jar 我们将在 pom.xml 中手动将版本 1.0 更新为 2.0,以防我们进行一些修改

我怎样才能做到这一点。

【问题讨论】:

  • &lt;version&gt;1.5.0/1.0&lt;/version&gt; 应该是&lt;version&gt;1.5.0&lt;/version&gt;
  • 删除 /1.0?我认为更多细节可能会有所帮助。
  • @DKAnsh : 1.5.0 是我的依赖版本,1.0 是我的项目版本。实现这一点的原因如果我使用依赖项(1.5.0)来构建相同的项目,那么 jar 在我的 .m2 文件夹 1.5.0\1.0\state-node-1.5.0.jar 中,如果我使用相同版本的依赖项进行一些修改那么我的项目 jar 应该在我的 .m2 文件夹 1.5.0\2.0\state-node-1.5.0.jar
  • 避免这种情况。使用带有 / 的版本号肯定会以意想不到的方式破坏事情。使用 .m2 中的文件夹结构更糟糕。坚持使用通常的版本号。我不明白您的“依赖版本”和“项目版本”的含义,但是如果您确实需要两个数字,请使用 1.5.0-1 和 1.5.0-2 之类的版本。

标签: java maven


【解决方案1】:

理想情况下,您不应该使用这样的版本。你应该使用&lt;version&gt;1.5.0&lt;/version&gt;

但是如果你仍然想使用相同的并且只是想修改 jar 文件名而不是你可以使用下面的解决方案:

<plugin>
    <groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-jar-plugin</artifactId>
    <version>2.3.2</version>
    <configuration>
        <finalName>myJar</finalName>                   
    </configuration>
</plugin>

或者对于 Maven >= 3

<build> <finalName>WhatEverYouLikey</finalName> </build>

【讨论】:

  • 首先不要使用这些旧版本的插件,而且 finalName 只会定义目标目录的名称,而不是正在安装/部署的内容。这是无法更改的。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-03-11
  • 2020-12-11
  • 1970-01-01
  • 2011-05-25
  • 1970-01-01
  • 2014-04-13
相关资源
最近更新 更多