为 SonarCloud 构建多模块 Maven 项目
Building multi-module maven project for SonarCloud
我第一次为 SonarCloud 构建一个包含 X 个模块的 Maven 项目。 sonar.projectKey
值需要是唯一的,所以我将它设置为 ${project.groupId}:{$project.artifactId}
,这样它就会按模块生成。之后,运行 CI 这是响应消息:
[ERROR] Failed to execute goal org.sonarsource.scanner.maven:sonar-maven-plugin:3.7.0.1746:sonar (default-cli) on project ${project.groupId}:${project.artifactId}: Could not find a default branch to fall back on. -> [Help 1]
我怀疑这是因为我没有在我的“组织”中使用该密钥创建项目,但问题是我有多个模块。事实上,我有 X 个。我是否仍应为每个要扫描的模块 创建一个项目? sonarqube 插件不应该处理吗?
看来我的问题与此无关,但声纳云中的 gitlab 导入器创建了一个项目,其密钥与 gitlab 上的项目名称相匹配。相反,您应该手动创建一个项目并在声纳云中为其分配 {groupId}:{artifactId}
名称以防止混淆。
出现错误消息是因为该键下没有项目,因此 sonar cloud 没有默认值。
对于那些努力让 sonarcloud.io 使用 github 操作的人来说 java 通过 maven 多模块项目管理的应用程序。
我创建了一个 Spring Maven 多模块项目,并希望能够在特定的 github 操作期间使用来自 sonarcloud.io 的声纳。
Github 项目:https://github.com/MagicSoup/SpringJOOQ
声纳云项目:https://sonarcloud.io/dashboard?id=MagicSoup_SpringJOOQ
您可以在此处找到我的 Github 操作:
https://github.com/MagicSoup/SpringJOOQ/blob/master/.github/workflows/maven-master.yml
sonar:
name: Test - SonarCloud Scan
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v2
- name: Set up JDK 11
uses: actions/setup-java@v1
with:
java-version: 11
- name: SonarCloud Scan
run: mvn -B clean verify -Psonar -Dsonar.login=${{ secrets.SONAR_TOKEN }}
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
在我的根 pom.xml 声纳配置文件中:
https://github.com/MagicSoup/SpringJOOQ/blob/master/pom.xml
<profile>
<id>sonar</id>
<properties>
<sonar.host.url>https://sonarcloud.io</sonar.host.url>
<sonar.organization>magicsoup</sonar.organization>
<sonar.projectKey>MagicSoup_SpringJOOQ</sonar.projectKey>
<sonar.moduleKey>${project.groupId}:${project.artifactId}</sonar.moduleKey>
</properties>
<activation>
<activeByDefault>false</activeByDefault>
</activation>
<build>
<plugins>
<plugin>
<groupId>org.sonarsource.scanner.maven</groupId>
<artifactId>sonar-maven-plugin</artifactId>
<version>${sonar.version}</version>
<executions>
<execution>
<phase>verify</phase>
<goals>
<goal>sonar</goal>
</goals>
</execution>
</executions>
</plugin>
</plugins>
</build>
</profile>
这里的重要信息是以下键:
MagicSoup_SpringJOOQ
${project.groupId}:${project.artifactId}
没有 le sonar.moduleKey 定义,我在多个具有相同密钥的项目上遇到了问题。
在 sonarcloud.io https://sonarcloud.io/projects/create 中使用分析 github 存储库创建项目期间,将显示一条消息,提示您应该使用另一种方式而不是自动方式,因为它不会'为 java 申请工作。然后你会选择一个proprosing“maven,gradle,...”,你会发现所有需要添加到你的maven pom.xml中的强制属性。包括您应该在 github).
中作为秘密令牌导出的 sonar.login
您可以在这里创建您的秘密令牌:https://github.com/User/Project/settings/secrets
您需要进行身份验证并相应地更改用户和项目。
关于该主题的一篇很棒的文章:https://medium.com/faun/continuous-integration-of-java-project-with-github-actions-7a8a0e8246ef
对我来说,我必须进入项目的 Sonar Cloud 管理设置,然后进入 Analysis Method 并关闭 SonarCloud Automatic Analysis,因为我已经通过 CI 进行了 运行 分析.
我第一次为 SonarCloud 构建一个包含 X 个模块的 Maven 项目。 sonar.projectKey
值需要是唯一的,所以我将它设置为 ${project.groupId}:{$project.artifactId}
,这样它就会按模块生成。之后,运行 CI 这是响应消息:
[ERROR] Failed to execute goal org.sonarsource.scanner.maven:sonar-maven-plugin:3.7.0.1746:sonar (default-cli) on project ${project.groupId}:${project.artifactId}: Could not find a default branch to fall back on. -> [Help 1]
我怀疑这是因为我没有在我的“组织”中使用该密钥创建项目,但问题是我有多个模块。事实上,我有 X 个。我是否仍应为每个要扫描的模块 创建一个项目? sonarqube 插件不应该处理吗?
看来我的问题与此无关,但声纳云中的 gitlab 导入器创建了一个项目,其密钥与 gitlab 上的项目名称相匹配。相反,您应该手动创建一个项目并在声纳云中为其分配 {groupId}:{artifactId}
名称以防止混淆。
出现错误消息是因为该键下没有项目,因此 sonar cloud 没有默认值。
对于那些努力让 sonarcloud.io 使用 github 操作的人来说 java 通过 maven 多模块项目管理的应用程序。
我创建了一个 Spring Maven 多模块项目,并希望能够在特定的 github 操作期间使用来自 sonarcloud.io 的声纳。
Github 项目:https://github.com/MagicSoup/SpringJOOQ
声纳云项目:https://sonarcloud.io/dashboard?id=MagicSoup_SpringJOOQ
您可以在此处找到我的 Github 操作: https://github.com/MagicSoup/SpringJOOQ/blob/master/.github/workflows/maven-master.yml
sonar:
name: Test - SonarCloud Scan
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v2
- name: Set up JDK 11
uses: actions/setup-java@v1
with:
java-version: 11
- name: SonarCloud Scan
run: mvn -B clean verify -Psonar -Dsonar.login=${{ secrets.SONAR_TOKEN }}
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
在我的根 pom.xml 声纳配置文件中: https://github.com/MagicSoup/SpringJOOQ/blob/master/pom.xml
<profile>
<id>sonar</id>
<properties>
<sonar.host.url>https://sonarcloud.io</sonar.host.url>
<sonar.organization>magicsoup</sonar.organization>
<sonar.projectKey>MagicSoup_SpringJOOQ</sonar.projectKey>
<sonar.moduleKey>${project.groupId}:${project.artifactId}</sonar.moduleKey>
</properties>
<activation>
<activeByDefault>false</activeByDefault>
</activation>
<build>
<plugins>
<plugin>
<groupId>org.sonarsource.scanner.maven</groupId>
<artifactId>sonar-maven-plugin</artifactId>
<version>${sonar.version}</version>
<executions>
<execution>
<phase>verify</phase>
<goals>
<goal>sonar</goal>
</goals>
</execution>
</executions>
</plugin>
</plugins>
</build>
</profile>
这里的重要信息是以下键:
MagicSoup_SpringJOOQ ${project.groupId}:${project.artifactId}
没有 le sonar.moduleKey 定义,我在多个具有相同密钥的项目上遇到了问题。
在 sonarcloud.io https://sonarcloud.io/projects/create 中使用分析 github 存储库创建项目期间,将显示一条消息,提示您应该使用另一种方式而不是自动方式,因为它不会'为 java 申请工作。然后你会选择一个proprosing“maven,gradle,...”,你会发现所有需要添加到你的maven pom.xml中的强制属性。包括您应该在 github).
中作为秘密令牌导出的 sonar.login您可以在这里创建您的秘密令牌:https://github.com/User/Project/settings/secrets 您需要进行身份验证并相应地更改用户和项目。
关于该主题的一篇很棒的文章:https://medium.com/faun/continuous-integration-of-java-project-with-github-actions-7a8a0e8246ef
对我来说,我必须进入项目的 Sonar Cloud 管理设置,然后进入 Analysis Method 并关闭 SonarCloud Automatic Analysis,因为我已经通过 CI 进行了 运行 分析.