Mock Maven发布

时间:2015-09-22 11:49:14

标签: maven

我们的所有项目都有一个基本的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,但我现在已经不再那么挑剔。

2 个答案:

答案 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;