我正在使用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部署插件:3.0.0-M1:deploy文件的参数"url"丢失或无效
是的,发生这种情况是因为节中没有<url>
标记,所以它是一个强制参数。
但为什么<distributionManagement>
被完全忽略了呢?我还为myrepo存储库配置了distributionManagement,因此在那里配置了url。
我必须做些什么才能使其在快照和版本的distributionManagement中工作?
根据这个答案,我找到了以下解决方案:
- 我已经完全去除了
maven-deploy-plugin
- 我在
maven-antrun-plugin
中添加了<attachartifact>
ant任务
通过这种方式,Ant运行插件生成的文件被正确地部署到Nexus,如下所述:
附加工件任务
此任务将把一个工件附加到当前的Maven项目中。这可以用于安装和部署Ant任务生成的工件。