如果存储库中存在较新版本的依赖项,如何使maven构建失败?

时间:2013-07-04 06:17:20

标签: maven dependency-management

嗯,问题是我希望maven在构建时检查依赖版本,并警告我是否有任何更新的依赖版本(事实上 - 如果我使用某个模块的过时版本通知我)。我的maven模块A具有以下依赖关系:

<dependency>
    <groupId>com.example.mycompany</groupId>
    <artifactId>commons</artifactId>
    <version>1.0.3</version>
</dependency>

com.example.mycompany:commons模块实际上已经有1.0.4个版本。有没有办法在repo中检查依赖项的版本,如果新版本已经可用,则无法构建。

我希望versions-maven-plugin可以做到。但我找不到合适的配置。

2 个答案:

答案 0 :(得分:3)

maven-enforcer-plugin可以解决此问题。您必须创建自己的custom rule,因为standard rules的非{}}似乎符合您的需求。

您要实施的规则的概念应该是强制执行依赖项是最新的。要实现检查,您可以通过您提到的versions-maven-plugin获得灵感。

答案 1 :(得分:2)

如果您正在使用源代码管理和持续集成服务器(这是一个安全的假设),您可以:

  1. 使用versions plugin并让它修改pom
  2. 然后使用scm:check-local-modification或发布插件作为发布插件IIRC检查本地修改。
  3. 以下是检查最新父pom的示例:

    func __calculateLabelRenderSizeWith(font: UIFont, renderMaxWidth: CGFloat, lineBreakMode:NSLineBreakMode) -> CGSize
    {
        var availableSize = CGSizeZero
        availableSize.width = renderMaxWidth
        availableSize.height = CGFloat.max
    
        let style = NSMutableParagraphStyle()
        style.lineBreakMode = lineBreakMode
    
        let attributes = [
            NSFontAttributeName: font,
            NSParagraphStyleAttributeName: style
        ]
        let textNodeSize = boundingRectWithSize(availableSize, options: .UsesLineFragmentOrigin, attributes: attributes, context: nil).size
        return textNodeSize;
    }