【发布时间】:2018-07-31 15:29:29
【问题描述】:
我的“finalName”和 build-helper-maven-plugin 在我的主模块中配置如下:
<build>
<finalName>${project.artifactId}_${build.time}</finalName>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
<plugin>
<groupId>org.codehaus.mojo</groupId>
<artifactId>build-helper-maven-plugin</artifactId>
<executions>
<execution>
<id>timestamp-property</id>
<goals>
<goal>timestamp-property</goal>
</goals>
<configuration>
<name>build.time</name>
<pattern>yyyy-MM-dd.HHmm</pattern>
<locale>fr_FR</locale>
<timeZone>Europe/Paris</timeZone>
</configuration>
</execution>
</executions>
</plugin>
</plugins>
</build>
当我在聚合器上使用“mvn package”时它工作正常,但如果我执行“mvn deploy”,它就会被忽略:工件使用类似于 version_artifactId_maven-timestamp 的模式(使用 UTC 的 maven-timestamp)。此外,当我在父级中拥有的唯一版本是“1.0.0-CD”时,上传的工件中使用的“版本”是“1.0.0-SNAPSHOT”。
我该如何解决这个问题?
附: : 所有这些测试都是本地的,还没有使用一些 CI 服务器。
P.P.S. : 我不得不说只有上传到 Artifactory 的工件有 错误的名称,我的目标目录中的工件很好。
【问题讨论】:
-
<finalName>..</finalName>仅定义在target目录中使用的名称,但在安装或部署时不会影响名称。如果这是可能的,那么 maven 存储库的整个概念就会被打破...... -
好的,但是如何影响已部署工件的名称?
-
通过
mvn install或mvn deploy使用的名称不能被影响。问题是你为什么需要它?此外,为什么需要构建时间?为什么不将 git sha1 之类的东西用于具有适当管理端点的 Spring Boot 工件......?此外,在本地生成被其他人使用的工件是一个坏主意……最好使用 CI 解决方案,以确保通过版本控制可重现状态……? -
我想控制存储在我的 Artifactory 中的工件的名称,这是一个作为超级 jar 发布的应用程序(而不是在其他项目中用作依赖项的 jar)。本地部署只是第一次测试,但詹金斯会使用相同的命令吗?这个例子与你所说的相反(在
属性中):stackoverflow.com/a/4245890/668455 -
除了 maven deploy 插件之外,您可以使用其他工具来部署您的工件吗?
标签: xml maven maven-3 artifactory