Jenkins 由于无法解决的依赖关系而产生的声纳警告

Jenkins 由于无法解决的依赖关系而产生的声纳警告,jenkins,sonarqube,Jenkins,Sonarqube,我们的项目是一个使用maven构建的多模块插件项目。声纳分析运行正常,但在此过程中会产生大量警告,可能会产生不正确的结果。下面是项目的设置和分析期间生成的警告。非常感谢您在修复这些警告方面提供的任何帮助 项目设置: 通过詹金斯构建进行声纳分析 Jenkins Sonar插件用于运行分析 Jenkins和Sonar以及MySQL在不同的机器上运行 以下属性在Sonar分析期间提供给Jenkins中的Sonar插件 -Dsonar.profile="My Project Profile" -

我们的项目是一个使用maven构建的多模块插件项目。声纳分析运行正常,但在此过程中会产生大量警告,可能会产生不正确的结果。下面是项目的设置和分析期间生成的警告。非常感谢您在修复这些警告方面提供的任何帮助

项目设置:

  • 通过詹金斯构建进行声纳分析
  • Jenkins Sonar插件用于运行分析
  • Jenkins和Sonar以及MySQL在不同的机器上运行
  • 以下属性在Sonar分析期间提供给Jenkins中的Sonar插件

    -Dsonar.profile="My Project Profile" -Dsonar.dynamicAnalysis=reuseReports -Dsonar.core.codeCoveragePlugin=jacoco -Dsonar.jacoco.reportPath=../../releng/com.mycompany.myproject.releng.builds/coverage_data/jacoco.exec -Dsonar.profile=“我的项目概要” -Dsonar.dynamicAnalysis=重用报告 -Dsonar.core.codeCoveragePlugin=jacoco -Dsonar.jacoco.reportPath=../../reling/com.mycompany.myproject.reling.builds/coverage\u data/jacoco.exec 以下是分析过程中生成的警告:

    注意:如果Sonar和Jenkins在同一台机器上运行,则不会生成以下警告

  • 在对单个模块进行声纳分析之前,抛出以下错误
  • [警告]在构建的这一点上无法解决以下依赖关系,但似乎是反应堆的一部分: 15:04:52[警告]o com.mycompany.myproject.plugins:com.mycompany.myproject.external.libraries:jar:1.0.0-SNAPSHOT(已提供) 15:04:52[警告]尝试运行构建到生命周期阶段“包” 15:04:52[警告]以下依赖项在构建的这一点无法解决,但似乎是反应堆的一部分: 15:04:52[警告]o com.mycompany.myproject.plugins:com.mycompany.myproject.somefunctionality.framework:jar:1.0.0-SNAPSHOT(已提供)
  • 在模块分析期间,它抛出以下警告
  • 无法通过类加载器访问类“com/mycompany/myproject/core/common/datatransfers/MyClass”。 [警告][15:05:25.731]无法通过类加载器访问类“com/mycompany/myproject/core/common/datatransfers/MyClass”。
  • 构建完成后,几乎所有模块在分析后都标记为跳过,但是分析结果可在Sonar中获得
  • [信息]com.mycompany.myproject.platform.feature。。。。。。。。。。。。。。。。跳过 [信息]com.mycompany.myproject.somefeature.feature。。。跳过 [信息]我的产品。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。跳过 [信息]------------------------------------------------------------------------ [信息]建立成功
    我知道这是一个迟到的回复,但我遇到了同样的问题,结果是我运行了
    mvn clean package
    ,而不是
    mvn clean install
    。我在SonarQube邮件列表中找到了,希望这能有所帮助。

    这个警告可能仅仅是由于插件中的竞争条件,比如
    maven jar插件
    (我在另一个与Sonar无关的maven 3.6.3案例中也有同样的警告)

    让我们考虑下面的项目布局:

    • acme父项
      所有项目的父项
    • acme聚合器
    • acme common
    • acme-p1
      取决于
      acme-common
    • acme-p2
      取决于
      acme-common
    • acme-p3
      取决于
      acme-common
    • acme-p4
      取决于
      acme-p2
      acme-p3
    Maven将按照以下顺序进行构建:

    • acme父级
    • acme common
    • acme-p1
      acme-p2
      acme-p3
      acme-p4
    然而,对于内部机械而言,这是另一回事:

    • acme-p2
      acme-p3
      不在本地存储库中
    • 都在反应堆里
    • 在调用
      acme-p1
      中的插件期间,maven将验证在reactor中找到的工件,并尝试解析本地工件的路径,但失败(因此发出警告)
    如果将
    acme-p4
    移动到
    acme-p1
    之前,这将更改生成顺序:警告将消失(注意:依赖项需要从本地存储库中删除),因为现在,
    acme-p2
    acme-p3
    有效地在
    acme-p1
    之前生成

    Maven将按照以下顺序进行构建:

    • acme父级
    • acme common
    • acme-p2
      acme-p3
      acme-p4
      acme-p1
    有一些修复方法:

    • 将依赖项从acme-p4添加到acme-p1:这将以额外的维护为代价强制执行构建顺序(在我的实际用例中,
      acme-p4
      packages
      acme-p2
      acme-p3
      使用
      maven assembly plugin
    • 在reactor中重新排序项目:我并没有使用
      -T
      选项测试它,允许并发构建,但我认为它也可能失败
    • 执行
      构建:警告中提到了它,但我怀疑Maven在某些情况下会引用本地存储库或远程存储库中的工件(如果您在它们上部署
      快照
      )。这可能很棘手:如果有人更改了一个方法的签名,那么Maven可能会下载快照(它较新,并且不在反应器中,因此它比本地repo更好),构建可能会失败(这纯粹是我的假设)

    这也可能是Maven在如何订购反应堆中的模块时出错。

    我们遇到了同样的问题。我想比较一下环境。您是否使用本地maven工件服务器,如JFrog工件厂或Sonatype Nexus?嗨,我也有同样的问题。你解决这个错误了吗?如果是这样,请告诉我如何解决?嗨,你确定这对你有用吗?clean-install和clean-package不是几乎相同,只是clean-package没有将任何插件安装到本地存储库中?你知道吗 [WARNING] The following dependencies could not be resolved at this point of the build but seem to be part of the reactor: 15:04:52 [WARNING] o com.mycompany.myproject.plugins:com.mycompany.myproject.external.libraries:jar:1.0.0-SNAPSHOT (provided) 15:04:52 [WARNING] Try running the build up to the lifecycle phase "package" 15:04:52 [WARNING] The following dependencies could not be resolved at this point of the build but seem to be part of the reactor: 15:04:52 [WARNING] o com.mycompany.myproject.plugins:com.mycompany.myproject.somefunctionality.framework:jar:1.0.0-SNAPSHOT (provided) Class 'com/mycompany/myproject/core/common/datatransfers/MyClass' is not accessible through the ClassLoader. [WARN] [15:05:25.731] Class 'com/mycompany/myproject/core/common/datatransfers/MyClass' is not accessible through the ClassLoader. [INFO] com.mycompany.myproject.platform.feature ................ SKIPPED [INFO] com.mycompany.myproject.somefeature.feature ... SKIPPED [INFO] My Product ............................... SKIPPED [INFO] ------------------------------------------------------------------------ [INFO] BUILD SUCCESS