【问题标题】:How to fail a project if dependencies are invalid如果依赖项无效,如何使项目失败
【发布时间】:2021-05-17 08:30:53
【问题描述】:

我正在开发一个 Maven 构建管道。 目前我面临的问题是,如果依赖项无效,maven 项目仍在构建中。 我想每个人都知道日志中的警告:

[警告] POM 无效,传递依赖项(如果有)将不可用,请启用调试日志以获取更多详细信息。

我希望项目失败而不是警告,因为在大型构建管道中很难找到它。

我查看了代码: 由于 EventType.ARTIFACT_DESCRIPTOR_INVALID,警告在 maven-core 中发生。

在 DefaultArtifactDescriptorReader 中,我发现在构建有效模型期间会捕获 ModelBuildingException。 有一个 ArtifactDescriptorPolicy。基于此,将添加异常或仅触发 EventType.ARTIFACT_DESCRIPTOR_INVALID(请参阅 invalidDescriptor())。

          model = modelBuilder.build( modelRequest ).getEffectiveModel();
    }
    catch ( ModelBuildingException e )
            {
                for ( ModelProblem problem : e.getProblems() )
                {
                    if ( problem.getException() instanceof UnresolvableModelException )
                    {
                        result.addException( problem.getException() );
                        throw new ArtifactDescriptorException( result );
                    }
                }
                invalidDescriptor( session, trace, a, e );
                if ( ( getPolicy( session, a, request ) & ArtifactDescriptorPolicy.IGNORE_INVALID ) != 0 )
                {
                    return null;
                }
                result.addException( e );
                throw new ArtifactDescriptorException( result );
            }

我没有找到配置 ArtifactDescriptorPolicy 的任何选项。 我希望 ArtifactDescriptorPolicy.STRICT 能解决我的问题。 有谁知道更多关于这个问题的信息吗?

【问题讨论】:

    标签: maven build


    【解决方案1】:

    我认为你有点超前了。 Maven 4 中有一个名为 --fail-on-severity-fos 的功能(新开关)正是这样做的:在特定严重性上使构建失败。

    $ mvn -fos WARN clean install
    

    如果您不介意处于最前沿,您可以安装它并试一试。

    【讨论】:

    • 谢谢,那就等着吧!
    猜你喜欢
    • 2018-10-15
    • 2014-11-27
    • 1970-01-01
    • 1970-01-01
    • 2020-10-28
    • 2021-09-29
    • 1970-01-01
    • 2017-07-20
    • 2018-06-20
    相关资源
    最近更新 更多