【问题标题】:Enforce artifact only depends on artifacts of equal or lower Java source version强制工件仅依赖于相同或更低 Java 源版本的工件
【发布时间】:2019-03-25 11:44:27
【问题描述】:

我正在升级一个庞大的系统,其中包含 3000 多个 java maven 项目和 repos,作为从 Java 7 到 8 的单体战争部署。我们将尝试一次迁移部分系统,这意味着一些工件将用jdk7和一些jdk8构建。

问题是;当使用 jdk7 构建的工件依赖于 jdk8 工件时,有没有办法(maven 插件或其他东西)强制执行(构建失败)。允许反向 (jdk8 -> jdk7) 以及 jdk8 -> jdk8。我不认为 maven 强制插件中的任何内置规则都可以做到这一点,而且这样做可能既困难又耗时?

希望我说的很清楚。有什么建议吗?

谢谢!

【问题讨论】:

    标签: java maven java-8 migration java-7


    【解决方案1】:

    原来的答案已经没有了,让我再写一遍,详细点。

    你可以使用额外的强制规则

    http://www.mojohaus.org/extra-enforcer-rules/enforceBytecodeVersion.html

    您将此插件配置为在您的所有项目中最多使用 JDK 1.7(带有 maxJdkVersion 属性)。然后禁用对已迁移到 Java 8 的所有项目的检查。

    【讨论】:

    • 谢谢,这应该可以工作,尽管有一些自动检测依赖错误的东西会很好,因为有成千上万的项目在玩。
    • 您可能设置了maven.compiler.source 来指定您的编译版本,对吧?然后你可以在规则的定义中使用${maven.compiler.source}。那么你没有任何改变。
    猜你喜欢
    • 2015-01-24
    • 2017-05-04
    • 2016-06-02
    • 1970-01-01
    • 1970-01-01
    • 2020-04-18
    • 1970-01-01
    • 2019-12-27
    • 2022-06-15
    相关资源
    最近更新 更多