嗨:我发现默认情况下maven部署会更改文件名以匹配版本+工件ID。例如
使用artifact = A和version = V-0.1部署jar文件将生成名为AV-0.1.jar的jar文件。
有没有办法在部署中更改jar文件的默认名称,以便它不会连接这些字段或明确指定最终部署的jar名称?
答案 0 :(得分:4)
复杂的答案:是的
这有点棘手,你需要小心,因为pom不会被重写。因此,只有maven远程存储库(artifactory或nexus)才会将其置于正确的文件夹结构中。
如果覆盖maven部署目标中的部署文件目标,则可以覆盖参数:http://maven.apache.org/plugins/maven-deploy-plugin/deploy-file-mojo.html
将版本4.5.1发布到nexus的一个示例如下所示:
<plugin>
<artifactId>maven-deploy-plugin</artifactId>
<executions>
<execution>
<goals>
<goal>deploy-file</goal>
</goals>
<phase>deploy</phase>
<configuration>
<repositoryId>nexus-site</repositoryId>
<url>http://nexus.some.where/nexus-2/content/repositories/releases</url>
<file>${build.directory}/${project.build.finalName}.${project.packaging}</file>
<generatePom>false</generatePom>
<pomFile>pom.xml</pomFile>
<version>4.5.1</version>
</configuration>
</execution>
</executions>
</plugin>
(在有人问之前,做这样的事情的一个原因是使构建更加CI友好。在CI中,一切都只是一个构建号,没有真正的“构建版本”,每个签到都会产生一个生产-ready artifact。所以通过用${BUILD_NUMBER}
替换4.5.1将在你的工件存储中留下许多版本......)
答案 1 :(得分:1)
使用curl命令行似乎可以用任何你想要的东西来提供Nexus。
curl -u<deploymentUser>:<deploymentPassword> --upload-file <someLocalFile> -v http://<nexusServerDNSName>/nexus/content/repositories/<repoPath>/<fileName>
对我而言,它完美无缺。最棒的是它没有pom.xml就可以工作。
更新:此答案可能对搜索如何绕过Maven概念并将任意命名文件部署到Nexus的人有用。如果问题是如何使用Maven,那么我同意答案“不可能”。
答案 2 :(得分:0)
简单回答是:否。
背后的问题是,如果您要更改命名模式,则无法在存储库中查找工件。这就是拥有固定命名架构的原因。
答案 3 :(得分:0)
mvn deploy:deploy-file -DartifactId = AAA -Dversion = VVV -Dpackaging =罐
上面的命令会将文件放在以下结构中。
AAA
-VVV
--AAA_VVV.jar
如果您只是想在连续推送到artifactory之间使创建文件的名称不同,则可以使用-Dpackaging参数。即。将值设置为当前时间戳
mvn deploy:deploy-file -DartifactId = AAA -Dversion = VVV -Dpackaging = 2017_01_31_01_37.jar
AAA
-VVV
--AAA_VVV.jar
--AAA_VVV2017_01_31_01_37.jar