如何在部署阶段将战争名称设置为Nexus存储库?

时间:2014-09-25 12:32:50

标签: maven jenkins nexus

我有快照存储库,用于存储Nexus的快照。构建管道由Jenkins和构建作业组成。此构建作业的目的是将工件(war文件)部署到nexus。一切正常,但我想重命名输出战争。战争文件名具有以下结构:

artifactName-version-date.anynumbers-anynumber.war 
(example-1.0.1-20140925-120156-3.war)

我尝试在构建配置中使用maven-war-plugin设置war name。

<plugin>
   <groupId>org.apache.maven.plugins</groupId>
   <artifactId>maven-war-plugin</artifactId>
   <version>2.0.2</version>
   <configuration>
       <warName>${build.name}</warName>
    </configuration>
 </plugin>

所需的战争名称应为格式,例如example-en-1.0.1-20140925-120156-3.war1,其中en是构建配置文件。属性build.name设置为值example-en。但是这个配置被忽略了,war文件仍然以不合需要的格式存储到Nexus。

当我查看构建日志时,有关于成功上传war文件到Nexus存储库的日志,并且有一个错误的war文件名。所以我不知道配置错误。

Maven命令是mvn clean deploy -P en

修改

以下是控制台日志的一部分,其中example-en.war被复制到jenkins工作区。这是正确的,但在最后一步是上传带有不同文件名的war文件。

[INFO] 
[INFO] --- maven-war-plugin:2.0.2:war (default-war) @ example ---
[INFO] Exploding webapp...
[INFO] Assembling webapp example in /var/lib/jenkins/workspace/build/example/target/example-sk
[INFO] Copy webapp webResources to /var/lib/jenkins/workspace/build/example/target/example-sk
[INFO] Generating war /var/lib/jenkins/workspace/build/example/target/example-sk.war
[INFO] Building war: /var/lib/jenkins/workspace/build/example/target/example-sk.war
[INFO] 
[INFO] --- maven-install-plugin:2.3:install (default-install) @ example ---
[INFO] Installing /var/lib/jenkins/workspace/build/example/target/example-sk.war to /var/lib/jenkins/.m2/repository/com/example/example/1.0.1-SNAPSHOT/example-1.0.1-SNAPSHOT.war
[INFO] Installing /var/lib/jenkins/workspace/build/example/pom.xml to /var/lib/jenkins/.m2/repository/com/example/example/1.0.1-SNAPSHOT/example-1.0.1-SNAPSHOT.pom
[INFO] 
[INFO] --- maven-deploy-plugin:2.7:deploy (default-deploy) @ example ---
Downloading: http://127.0.0.1:8082/nexus/content/repositories/example-snapshots/com/example/example/1.0.1-SNAPSHOT/maven-metadata.xml
774/774 B   

Downloaded: http://127.0.0.1:8082/nexus/content/repositories/example-snapshots/com/example/example/1.0.1-SNAPSHOT/maven-metadata.xml (774 B at 3.4 KB/sec)
Uploading: http://127.0.0.1:8082/nexus/content/repositories/example-snapshots/com/example/example/1.0.1-SNAPSHOT/example-1.0.1-20140925.120156-3.war

2 个答案:

答案 0 :(得分:1)

我认为你应该研究Nexus存储库设置。您是否曾尝试手动上传任何内容?您可以看到,无论文件名是什么,将其上传到Nexus存储库后,都可以下载为&#34; $ {artifactId} - $ {version} - $ {classifier}。$ {packaging}& #34;

很遗憾,我现在无法访问Nexus,但我无法检查是否可以将其设置为保留名称。

第二种方法是将标记设置为所需的格式(因为它接受变量$ {}),这将是Nexus命名约定的变通方法(如果我没记错的话,将版本部分中的变量视为已弃用)。

答案 1 :(得分:0)

您无需为此添加插件。只需将<finalName>添加到<build>..</build>,就像这样

<build>
    <finalName>example-en-${build.name}</finalName>
    ......
</build>