【发布时间】:2026-01-07 04:50:01
【问题描述】:
当运行 mvn deploy 并且版本是 SNAPSHOT 版本时,我希望能够仅部署 POM 工件(文件)而不部署主要工件(JAR、WAR 等)。
为什么?
我们有几位开发人员从事多个 Maven 项目。我们有一个 Hudson 服务器,每个 Maven 项目和版本都有一个作业(例如 foo-1.2、foo-1.3)。每个作业都会构建项目并将其部署到 Nexus 服务器(成功后)。正在开发的 Maven 项目通过在版本中使用 -SNAPSHOT 后缀进行标记。例如:1.2-SNAPSHOT、1.3-SNAPSHOT。
这是一个示例场景,开发人员的工作如何因这种架构而受损。
假设有两个 Maven 项目:foo-core 和 foo-webapp,都在 1.2-SNAPSHOT 版本。
- 开发人员 A 正在开发 foo-core,进行了一些更改并对其进行了编译。
- 开发人员 A 继续工作,但在 foo-webapp 上。
- 开发人员 B 开始工作并更改 foo-core。它提交他的工作并将其推送到 SCM。
- Hudson 由 SCM 触发;构建 foo-core 并将其部署到 Nexus 中的快照存储库。
- 开发人员 A 在 foo-webapp 上运行
mvn install。 Maven 正在检查 Nexus,并发现 Nexus 中有更新版本的 foo-core。它下载它(充满了开发人员 B 的更改),然后编译失败,因为开发人员 A 所做的更改不在本地存储库中的 jar 中。下载会覆盖开发者 A 在此处安装的文件。
现有解决方案
我查看了 maven-deploy-plugin,但这个插件部署了附加到项目的所有工件。如果他们有办法配置要部署的工件,那就太好了。
问题:有没有什么办法可以解决这个问题,而无需借助基于 maven-deploy-plugin 编写我自己的部署插件?
【问题讨论】: