【问题标题】:How can I delete LIB projects in a clean way?如何以干净的方式删除 LIB 项目?
【发布时间】:2014-09-10 16:46:04
【问题描述】:

给定两个资源键:

  • A1:groupid:artifactid:trunk
  • A2:groupid:artifactid

当我尝试通过 SonarQube 的更新密钥功能将 A1 重命名为 A2 时,我收到一条消息,指出无法重命名密钥 A1,因为密钥 A2“是现有资源的密钥”。

在查看了数据库的内容后,似乎 A2 存在于“项目”表中,如下所示:

[1]
    0:  {
        id: "114499"
        k: "groupid:artifactid"
        nm: "groupid:artifactid"
        sc: "PRJ"
        qu: "LIB"
    }

我猜我面临的问题是由于 SonarQube 处理依赖项的方式:分析时,当分析另一个项目时,A1 在其名称(和 TRK 限定符)中注册了“分支”部分,他的依赖项不包含分支信息,因此注册了对 A2 的依赖项,而不是 A1。由于 SonarQube 找不到 A2 作为项目(TRK 限定符),它在其数据库中创建 A2 作为具有 LIB 限定符的新项目。结果,我无法将 A1 重命名为 A2,因为 A2 已经存在。

我试图通过 /api/projects webservice 删除 A2,但我收到以下错误,这让我认为 webservice 无法处理 LIB 项目:

{
    err_code: 400
    err_msg: "Not valid project"
}

问题:

如何以干净的方式删除所有不需要的“LIB”项目(即删除 SonarQube 数据库中可能正在使用它们的所有其他行)?

我们将不胜感激。

提前谢谢你。

【问题讨论】:

    标签: sonarqube


    【解决方案1】:

    我今天遇到了完全相同的问题。我在任何地方都找不到该项目,所以我最终打开了数据库。

    在声纳数据库的“项目”表中,列出了所有项目。我搜索了该项目并将“kee”列值更新为使用过的名称。 (A2 -> A21)

    我所做的实际上并不是修复,但它解决了问题。我不建议在生产系统上执行此操作,因为我不知道它可能对数据完整性产生什么影响。

    【讨论】:

    • 那是我的问题,该实例现在已经运行了 3 年(35 个 maven 项目),我不想搞砸数据库的内容。我希望有一种更清洁的方法来做到这一点。
    猜你喜欢
    • 2016-03-24
    • 1970-01-01
    • 2015-12-01
    • 2012-09-23
    • 1970-01-01
    • 1970-01-01
    • 2013-10-19
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多