【问题标题】:Sonar violation for dependency scope system依赖范围系统的声纳违规
【发布时间】:2023-04-04 11:13:01
【问题描述】:

在解决声纳问题时需要帮助。我们正在使用一些在 Maven 公共存储库中不存在的第三方 jar。 我将它的依赖定义为:

        <dependency>
            <groupId>api</groupId>
            <artifactId>api</artifactId>
            <scope>system</scope>
            <version>1.0</version>
            <systemPath>${project.basedir}\lib\api-1.0.jar</systemPath>
        </dependency>

但 Sonar 正在通过消息对其进行严重违规

更新此范围并删除“systemPath”。

使用 maven 添加第三方 jar 的正确方法是什么,这些 jar 不在 maven 公共存储库中。

【问题讨论】:

  • 我不确定如何解决这个特定问题,但是当 sonarqube 提出问题时,它会提供有关问题原因以及如何解决问题的详细信息。 UI 中应该有一个选项可以访问额外的信息。
  • 我确实查看了 sonarqube 提供的信息,但它只解释了问题以及为什么不应该使用它。它没有提供可用于解决它的替代方法。

标签: java maven sonarqube


【解决方案1】:

您应该将这些依赖项安装在本地 maven 存储库中,名称为 maven clean install

或者更好地使用nexus repository managerartifactory 并在那里部署你的依赖项。

然后您可以将您的库用作常规 maven 依赖项

<dependency>
        <groupId>api</groupId>
        <artifactId>api</artifactId>
        <version>1.0</version>
    </dependency>

【讨论】:

  • 我不知道 nexus 存储库管理器和工件。只有两个外部罐子。部署它们是个好主意。这些存储库是免费的吗?
  • nexus 是免费的,它允许您在互联网访问失败的情况下拥有所有依赖项的本地缓存。使用存储库管理器是公司项目的常规做法。
  • 这比提供 jar 更糟糕,因为出于安全或许可原因,它可能无法或不应从外部访问。
【解决方案2】:

通过运行以下 maven 命令安装在本地仓库中 mvn install:install-file -Dfile=api-1.0.jar。这允许 Maven 拥有该 jar 而无需从远程存储库中获取。

那么,您不需要将范围指定为system

【讨论】:

  • 我在本地 repo 中安装了 jar 并解决了问题。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2023-04-01
  • 1970-01-01
  • 2013-07-27
  • 2012-05-17
  • 1970-01-01
  • 2014-07-19
相关资源
最近更新 更多