maven:部署工件文件名

时间:2013-06-10 14:09:05

标签: maven deployment names

嗨:我发现默认情况下maven部署会更改文件名以匹配版本+工件ID。例如

使用artifact = A和version = V-0.1部署jar文件将生成名为AV-0.1.jar的jar文件。

有没有办法在部署中更改jar文件的默认名称,以便它不会连接这些字段或明确指定最终部署的jar名称?

4 个答案:

答案 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>
  • deploymentUser deploymentPassword 应取自〜/ .m2 / settings.xml。
  • someLocalFile 是您要部署的文件(绝对路径)
  • 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