当前位置: 首页 > 面试题库 >

从Jenkins中的pom文件自动派生强制性SonarQube属性

尉迟宣
2023-03-14
问题内容

情况:

我想用由詹金斯(1.642.4)触发的SonarQube(5.4)分析我的项目。它是使用maven构建的Java项目。

我看到两种触发分析的方法:

  1. 发布构建操作“使用maven进行SonarQube分析”,但 已弃用 ,所以我不想使用它
  2. 推荐的构建后步骤是“执行SonarQube扫描仪”。

问题:

如果我使用了不赞成使用的Post Build Action,那么声纳项目配置的属性会自动从项目pom派生。

我使用推荐的后期构建步骤,但收到异常

您必须为“未知”定义以下必需属性:sonar.projectKey,sonar.projectName,sonar.projectVersion,sonar.sources

不希望的解决方案

解决方案是通过java项目中的sonar-project.properties文件或Jenkins步骤中的参数提供所需的属性。

恕我直言:这是重复的。所有相关信息都在Maven
pom中定义:projectKey可以从artifactId派生,projectName和projectVerstion是maven中的相同属性。特别是projectVersion至关重要。我不想在每个发行版之后更新项目版本(或在发行插件中编写一些代码以自动更新它)。

我想要的是

我想在Jenkins中使用推荐的Post Build
Step,而无需为我的所有项目重新定义所有项目属性以使声纳开心。相反,声纳/詹金斯/插件/无论应该从我的Maven
pom文件中获取属性。我可以使用其他插件吗?我可以重新配置我的Jenkins-Sonar-Plugin吗?

我不想在pom /项目中提供任何声纳特定的信息,因为该项目不应该关心声纳。它应仅包含构建项目所需的信息。


问题答案:

该文档(尽管有些混乱,请参见下面的编辑)说明了如何使用通用的生成后步骤(利用环境变量),而不是不建议使用的生成后操作。简而言之:

  • 在Jenkins中安装最新的SonarQube插件(截至目前为v2.4)
  • 在SonarQube服务器下的System Config中: Enable injection of SonarQube server configuration as build environment variables
  • 在您的Maven项目的配置中:
    • 检查 Prepare SonarQube Scanner environment
    • 添加一个构建后步骤,Invoke top-level Maven targets并在Goals字段中利用注入的环境变量,例如:

$ SONAR_MAVEN_GOAL -Dsonar.host.url = $ SONAR_HOST_URL -Dsonar.login = $
SONAR_AUTH_TOKEN

编辑
:当文档说时The Post-build Action for Maven analysis is deprecated.,它是指 不再记录的旧的构建后 操作
。该警告之后的段落(对此答案进行了总结)确实是推荐的步骤。如果仍不清楚,请在此处进行说明。



 类似资料:
  • 情况: 我想用由Jenkins(1.642.4)触发的SonarQube(5.4)来分析我的项目。这是一个用Maven构建的java项目。 我看到了两种触发分析的方法: null 问题: 如果我使用不推荐使用的Post Build操作,则sonar项目配置的属性将自动从项目POM派生。 如果我使用推荐的构建后步骤,我将收到异常 必须为“Unknown”定义以下强制属性:Sonar.ProjectK

  • 我只是使用SonarQube-Plugin for Jenkins并配置Jenkins作业来执行SonarQube扫描器。如果我在UI中保留analysis属性,而sonar-scanner.properties为空,则缺少强制属性。根据这个问题,至少应该从maven属性自动派生。如果我直接设置和属性,那么一切都可以正常工作。但是如何才能实现maven属性被插件使用呢? 编辑:如果我将UI中的分析

  • 我将基于Maven的Spring应用打包为: 奇怪的事情发生了。在生成的jar的META-INF中,我发现重复的pom.xml和pom.properties文件。有人能解释一下吗?谢谢。 这里是提取pom.xml 命令的输出: ApacheMaven 3.0.4(r1232337;2012-01-17 15:44:56 0700)Maven主页:C:\Apache-Maven-3.0.4\bin。

  • 我现在正在使用JavaFX,我正在跟随一个教程来学习Java的这一部分。不过,我有一个关于属性的问题: 如何正确处理JavaFX中的派生属性? 让我以一个例子来澄清。假设您有一个具有简单属性的模型: null 但是,表视图不接受整数,而只接受可观察的整数。如果有人更改用户的生日,我希望表自动更改。 我可以在中创建,但我不认为这是一个解决方案。我还可以在类中创建一个名为的,但我听起来不太对,因为ag

  • 我有如下表格: 我创建了如下pojo类: 另一个类 现在,我尝试使用JOOQ从数据库中获取记录。但我无法将json组件字符串转换为组件类。 我正在读取下表中的数据: 在数据库中,我有以下记录。 获取数据时,我收到以下错误 我是JOOQ的新手。如果我错过了什么,请告诉我。提前谢谢。

  • 和标题差不多。我在请求正文中有一个可选对象。但是,如果给定了该对象,则它必须包含几个子属性。 我的OpenAPI组件配置如下所示: 我正在使用express openapi validator来验证这一点。现在,我不明白这是否是express openapi validator包的问题,但可选字段(partner)的必填字段(名称、电话)从未验证过。我可以只提供合作伙伴:{},然后直接插入,或者甚