【发布时间】:2018-12-21 11:29:36
【问题描述】:
我的项目有 pom.xml,它建立了 ear。我在 pom.xml 中添加了 finalName 标签,例如test-ear-${parent.version}-${region}。我正在使用以下命令 -> mvn clean install -Dregion=QA。在我的本地工作区中,ear 的正确名称为 test-ear-3.5.23.0-QA.ear。但是,当它安装在存储库中时,它的构建类似于 test-3.5.23.0.ear。意味着它在本地存储库中安装时忽略了 finalName。
我的理解是,maven 忽略标签并使用 ArtifactName + Version 来构建工件的名称。此外,我无法覆盖工件 test-ear 的版本,因为我想我正在使用父标签中的相对路径。这是我的示例 pom.xml:-
<parent>
<groupId>com.proj</groupId>
<artifactId>test-parent</artifactId>
<relativePath>../test-parent/pom.xml</relativePath>
<version>${pom.version}</version>
</parent>
<groupId>com.proj.child</groupId>
<artifactId>test-ear</artifactId>
<packaging>ear</packaging>
<build>
<finalName>test-ear-${parent.version}-${region}</finalName>
<plugins>
<plugin>
.................
如果我提供工件版本和测试耳工件的所有依赖项的版本,它对我有用。有人可以指导一下,我的 pom 出了什么问题。
【问题讨论】:
-
<finalName>..</finalName>标签仅用于更改target目录中的名称。您无法更改存储库的命名约定。存储库中的命名规则是artifactId-VERSION.XXX...此外,<version>${pom.version}</version>的使用将在构建期间导致警告,如果您使用它执行install或deploy,这将导致无法使用的 poms。 -
我无法使用版本标签
test-ear-${parent.version}-${region} 覆盖版本,因为我在父 pom 中使用相对路径标签。如果我在所有依赖项中提到版本,它对我有用。但不要认为这是理想的解决方案。