情况:
我想用由詹金斯(1.642.4)触发的SonarQube(5.4)分析我的项目。它是使用maven构建的Java项目。
我看到两种触发分析的方法:
问题:
如果我使用了不赞成使用的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 /项目中提供任何声纳特定的信息,因为该项目不应该关心声纳。它应仅包含构建项目所需的信息。
该文档(尽管有些混乱,请参见下面的编辑)说明了如何使用通用的生成后步骤(利用环境变量),而不是不建议使用的生成后操作。简而言之:
Enable injection of SonarQube server configuration as build environment variables
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.,它是指 不再记录的旧的构建后 操作 。该警告之后的段落(对此答案进行了总结)确实是推荐的步骤。如果仍不清楚,请在此处进行说明。
The Post-build Action for Maven analysis is deprecated.