【发布时间】:2020-08-16 05:41:14
【问题描述】:
我正在使用maven-deploy-plugin 在构建结束时将由maven-antrun-plugin 的任务生成的工件部署到Nexus。
Ant 任务只是创建一个由 Maven 构建的组装档案的 .sh 文件。
我必须包含maven-deploy-plugin,因为否则 .sh 不会上传到 Nexus,它会被构建的生命周期完全忽略。
这是我试过的插件配置:
<plugin>
<artifactId>maven-deploy-plugin</artifactId>
<version>3.0.0-M1</version>
<configuration>
<skip>false</skip>
</configuration>
<executions>
<execution>
<id>deploy-sh</id>
<phase>deploy</phase>
<goals>
<goal>deploy-file</goal>
</goals>
<configuration>
<skip>false</skip>
<file>${project.build.directory}/${project.artifactId}-${project.version}-autoinstaller.sh</file>
<repositoryId>myrepo</repositoryId>
<groupId>${project.groupId}</groupId>
<artifactId>${project.artifactId}</artifactId>
<version>${project.version}</version>
</configuration>
</execution>
</executions>
</plugin>
我使用 mvn clean deploy 目标运行 Maven 构建,但它失败并出现以下错误:
[INFO] --- maven-deploy-plugin:3.0.0-M1:deploy-file (deploy-sh) @ MyApplication ---
[INFO] ------------------------------------------------------------------------
[INFO] BUILD FAILURE
[INFO] ------------------------------------------------------------------------
[INFO] Total time: 04:11 min
[INFO] Finished at: 2020-05-01T19:07:40+02:00
[INFO] ------------------------------------------------------------------------
[ERROR] Failed to execute goal org.apache.maven.plugins:maven-deploy-plugin:3.0.0-M1:deploy-file (deploy-sh) on project MyApplication: The parameters 'url' for goal org.apache.maven.plugins:maven-deploy-plugin:3.0.0-M1:deploy-file are missing or invalid -> [Help 1]
目标 org.apache.maven.plugins:maven-deploy-plugin:3.0.0-M1:deploy-file 的参数“url”丢失或无效
是的,这是因为该部分中没有 <url> 标记,所以它是一个强制参数。
但是为什么<distributionManagement> 会被完全忽略呢?我还为 myrepo 存储库配置了一个 distributionManagement,因此在那里配置了 url。
我必须做些什么才能使其在 快照 和 发布 的分布管理中工作?
【问题讨论】:
-
我建议使用buildhelper-maven-plugin 并将工件附加到您的构建中要容易得多。例如通过
attach-artifact? -
@khmarbaise 我找到了
<attachartifact>的maven-antrun-plugin的解决方案,如我在下面发布的答案中所述。顺便说一句,buildhelper-maven-plugin的attach-artifact在打包阶段工作,所以它对我的任务没有用(我在安装阶段) -
您可以将插件绑定到您喜欢的任何阶段......为什么不打包阶段?你能详细解释一下
he Ant task simply creates a file .sh of the assembled archive built by Maven.吗? -
正如我所写,我需要将一个由 Ant 任务创建的文件部署到 Nexus,该文件在构建结束时执行,此时构建已经创建了所有文件。
标签: maven pom.xml nexus3 maven-deploy-plugin