Java ApacheAnt+Ivy:仅为选定配置发布工件

Java ApacheAnt+Ivy:仅为选定配置发布工件,java,ant,build,ivy,Java,Ant,Build,Ivy,背景: 我有一个持续的集成系统,它在每一次更改以及夜间运行构建。我不希望构建在每次更改的基础上运行JUnit和代码覆盖率。然而,它必须在夜间构建中运行它。 最近我们迁移到Ant 1.84+Ivy 2.3.0-RC2,事情看起来非常令人印象深刻。 然而,这是一个问题。在我的系统中,一个项目中的单元测试依赖于另一个项目中的单元测试。我可以构建和发布那些单元测试。但是我必须为每一次失败的构建都这样做。单元测试和覆盖必须只在夜间构建中运行,而不是在每个构建中运行 <publications>

背景:

我有一个持续的集成系统,它在每一次更改以及夜间运行构建。我不希望构建在每次更改的基础上运行JUnit和代码覆盖率。然而,它必须在夜间构建中运行它。 最近我们迁移到Ant 1.84+Ivy 2.3.0-RC2,事情看起来非常令人印象深刻。 然而,这是一个问题。在我的系统中,一个项目中的单元测试依赖于另一个项目中的单元测试。我可以构建和发布那些单元测试。但是我必须为每一次失败的构建都这样做。单元测试和覆盖必须只在夜间构建中运行,而不是在每个构建中运行

<publications>
    <artifact name="myutil" type="jar" conf="default"/>
    <artifact name="myutil-test" type="jar" conf="test"/>
</publications>
例如,对于ivy.xml中的以下部分,我需要为每个构建构建myutil.jar和myutil-test.jar

<publications>
    <artifact name="myutil" type="jar" conf="default"/>
    <artifact name="myutil-test" type="jar" conf="test"/>
</publications>

我已经为此挣扎了几个星期了。有没有办法只发布选定常春藤配置的工件而不是所有配置的工件?换句话说,有没有一种方法可以让我只发布给定构建的默认配置工件,以及其他构建的默认和测试工件,保持相同的ivy.xml?

也许将测试代码分解成一个单独的模块比一个大模块更简单。这种方法将使您能够在任何适合您的计划的时候构建测试,并且包含生产代码的常春藤模块可以将测试模块作为依赖项包含在内。是的。我想了想。我们有许多模块,每个模块都有一组应用于该模块的测试用例Junit。但是,要说服我的整个时间从所有这些模块中分离出测试模块将是非常困难的——更不用说它会引起的混乱了。我想我不得不接受发布虚拟test.jar,而只构建代码,发布真正的test.jar以进行单元测试和覆盖。你不必对每个项目进行测试,只需要在构建之间共享那些可重用的组件。这是一个很好的实践,也是依赖关系管理的全部内容。