如何使用Maven打包特定版本?

6

我想要调用

mvn clean install -Dsomeproperty=1.2.3-20110526-1836

获取

artifact-1.2.3-20110526-1836.jar

代替
artifact-1.2.3-SNAPSHOT.jar

我该如何将时间戳传递给Maven?

1
你不应该将那个版本(1.2.3-20110526-1836)放入pom.xml文件中吗? - Lukas Eder
为什么你想要做这样的事情?如果你想要防止从远程仓库下载构件,可以使用 --offline 开关。 - teodozjan
1
我们有一个每晚构建的版本,会生成带时间戳的版本号,我想用我的本地更改覆盖它们。这是一个大型构建,所以我只能偶尔调整一些属性。我不想改变pom文件。 - Bastl
3个回答

7

在pom.xml中,以下构件设置似乎可以实现您想要的功能:

<groupId>testgroup</groupId>
<artifactId>testartifact</artifactId>
<version>${someproperty}</version>

现在,如果你执行“mvn clean install -Dsomeproperty=1.1.timestamp”,生成的jar文件也会在其名称中包含时间戳。
我不确定这是否是您要找的内容。
编辑
另一种解决方案,因为pom文件无法更改。
通常执行“mvn clean install”命令。这将生成一个类似于artifact-1.2.3-SNAPSHOT.jar的jar文件。
再次安装此文件 - 这次使用“mvn install:install-file - Dfile = artifact-1.2.3-SNAPSHOT.jar - DgroupId = testgroup - DartifactId = testartifact - Dversion = 1.2.3-123456-1234 - Dpackaging = jar”。这将在本地存储库中安装artifact-1.2.3-123456-1234.jar。

是的,那很接近。但正如我所说,我不想(也不能)编辑pom.xml - 它由一个特殊的团队维护。我想设置-Dproject.version=1.2.3-123456-1234,但没有成功。我该如何正确地做到这一点? - Bastl
2
好的。没有注意到您对pom性质的要求。那么我建议另一种方法。正常执行“mvn clean install”命令。这将生成一个类似artifact-1.2.3-SNAPSHOT.jar的jar文件。现在,再次安装此文件 - 这次使用“mvn install:install-file -Dfile = artifact-1.2.3-SNAPSHOT.jar -DgroupId = testgroup -DartifactId = testartifact -Dversion = 1.2.3-123456-1234 -Dpackaging = jar”。这将在本地存储库中安装artifact-1.2.3-123456-1234.jar。 - Vijay

1

虽然这样做可以实现你所要求的功能:

<project ...>
    <properties>
         <someproperty>somproperty-default-value</someproperty>
    </properties>
    <build>
        <finalName>artifact-${someproperty}</finalName>
        ....
    </build>
    ....
</project>

我建议使用这个:如何向Maven构件添加时间戳信息?

0
最快的解决方法是运行:
     mvn clean install --offline

这将防止从远程仓库加载您的夜间构建。

您还可以尝试使用settings.xml进行设置。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接