我们的所有项目都有一个基本的Maven父POM,它使用集成测试进行测试。但是,定制的很大一部分是Maven版本插件:
<plugin>
<artifactId>maven-release-plugin</artifactId>
<configuration>
<tagBase>https://my-url</tagBase>
<preparationGoals>clean verify org.acme:my-plugin:my-goal</preparationGoals>
<completionGoals>org.acme:my-other-plugin:other-goal<completionGoals>
<resume>false</resume>
</configuration>
</plugin>
我尝试通过“release:prepare”进行测试,并为父POM获取Can't release project due to non released dependencies
,甚至无法通过-DallowTimestampedSnapshots=true
删除。
我可以通过“release:prepare -DdryRun = true”进行测试,但这甚至不能测试准备目标。因此,我能想到的另一种方法是释放POM,然后尝试释放任意项目。所以现在我的版本是1.0.14并且已经恢复了大约50次,而且我认为这不再是正确的方式了。
有没有办法模拟Maven版本?也许告诉他标记到本地路径并让他在那里进行更改?他也不应该部署到我们的Nexus,但我现在已经不再那么挑剔。
答案 0 :(得分:0)
使用配置文件模块化您的流程。拥有触发“准备”操作的配置文件,以及触发“执行”操作的配置文件,并在运行发布插件之前或之前测试这些。配置发布插件以通过激活配置文件来执行这些操作。
答案 1 :(得分:0)
我还需要这样做,并且像我一样,我对实际进行SVN提交或部署到远程仓库不感兴趣 - 在我看来,验证是其他集成测试的一部分。我认为maven-release-plugin
开发人员也有类似的需求,事实上确实如此。他们写了mock SCM and wagon providers。
您可以在标识为run-its
的{{3}}个人资料中看到使用的模拟效果。请注意,在运行任何实际测试之前,配置使用setupIncludes
来确保在本地存储库中构建并安装了模拟。
项目本身需要使用模拟。查看其中一个release plugin POM,了解如何定义scm
元素并添加依赖于Wagon模拟。
我使用integration tests来验证测试期间是否运行了相应的执行。
注意:我链接的安装目录中有3个模拟。我发现我只需要使用其中两个,后缀为&#34; -dummy。&#34;