当运行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的自己的部署插件的解决方法?