SonarQube 全方位指南:从 Docker 安装到 CI/CD 集成
一、前言:为何需要 SonarQube?在现代软件开发中,代码质量是项目成功与否的关键因素之一。一个充满技术债、Bug 和安全漏洞的项目,不仅难以维护,更会随着时间的推移变得愈发脆弱。虽然优秀的程序员会努力编写高质量的代码,但完全依赖人的自觉性和经验是不可靠的。 SonarQube 是一个业界领先的开源平台,用于持续检查代码质量。它通过静态代码分析,可以检测出代码中的 Bug、漏洞 (Vulnerabilities) 和坏味道 (Code Smells),并提供详细的报告和改进建议。将 SonarQube 集成到 CI/CD 流水线中,可以建立起自动化的代码质量门禁,确保不合规的代码无法进入生产环境,从而持续提升团队的整体代码质量。 本指南将详细介绍如何使用 Docker 部署 SonarQube,并将其与 GitLab CI、Maven 等工具链集成。 二、使用 Docker 安装 SonarQube官方推荐使用 Docker 进行部署,方便快捷。 1. 版本选择SonarQube 提供多个版本,主要区别在于功能和支持的语言: Community Edition (...
Maven & Gradle 多环境配置
Gradle 多环境配置目录结构 指定环境打包在 application.yml/yaml/properties 中: 执行 bootJar 打包命令前要先执行 clean【其它和 processResources 相关的命令也要先执行 clean】,否则 active 值不会变! 123spring: profiles: active: @activeProfile@ 修改 build.gradle 的 processResources 任务123456789101112131415161718192021222324252627282930313233def activeProfile = project.properties['activeProfile'] ?: "dev"processResources { exclude { FileTreeElement details -> { (//排除不是当前环境的 yml 配置文件 details.file.na...
如何在 Maven 中央仓库精准查找 Maven 依赖
背景在使用 Maven 构建项目的时候,我们有时候会发现,在 Maven 提供的 https://mvnrepository.com/ 这个网站搜索出来的依赖,有时候并搜索不出来我们想要的依赖。这时候可以在 https://search.maven.org/ 中结合精准查询使用。 场景一:知道用的什么类,如何找到 Maven 依赖知道类的完整路径搜索(其中 fc 代表 full class,知道类的完整路径的时候使用): 1fc:com.google.common.collect.ImmutableSet 只知道类名搜索(其中 c 代表 class,只知道类名的时候使用): 1c:ImmutableSet 场景二:知道 Group ID 或者 Artifact ID,如何找到 Maven 依赖知道 Group ID搜索(其中 g 代表 group id,知道 group id 的时候使用): 1g:com.alibaba 知道 Artifact ID搜索(其中 a 代表 artifact id,知道 artifact id 的时候使用): 1a:druid
Maven 常用指令记录
解决 IDEA 编译爆红问题 mvn idea:idea 功能类似断点续传,爆红可能是之前有哪些包没有加载进来 invalidate cache restart -> 再重新 reimport 可能只是单纯 IDEA 缓存的问题 mvn idea:module 根目录下 .iml 文件没有可能会导致不识别 .java 文件,需要重新生成 绝大部分时候,删除项目下的 .iml 文件,再重新 import 下就可以解决问题 IDEA Maven 下载源码出现:Cannot download sources Sources not found for: xxx 12# 在对应项目 pom.xml 所在目录下执行以下命令:mvn dependency:resolve -Dclassifier=sources 记录 Maven 常用参数123456789101112131415161718192021222324252627282930-h,--help Display help informati...
将 Maven 包发布到 Maven 中央仓库
注意点: 测试 gpg 和 javadoc 插件不适用于 JDK 11,JDK 8 测试没问题 同一个版本号不可以重复发布 无法删除已发布的包 注册 Sonatype 的账户注册地址 点击界面上方 Create 按钮即可创建 Issue。 12345678Project: Community Support - Open Source Project Repository Hosting (OSSRH)Issue TypeRequired: New ProjectSummary: Jar 包的名称# 注意这里,group id 需要证实当前域是你本人所有的,我就在这里配错了,找了好半天,详细的过程可以看这里 https://issues.sonatype.org/browse/OSSRH-79407Group Id:io.github.wang-xiaowuProject URL:项目站点,如:https://gitee.com/snowheart/dingtalk-robotSCM url:项目源码仓库,如:https://gitee.com/snowheart/din...
Maven 配合 Fabric8 插件整合使用
Maven 配合 fabric8 插件整合使用(谨供参考) 自建镜像仓库并推送到远端定义 properties: 123456789<docker.plugin.version>0.35.0</docker.plugin.version><!--docker 守护进程 uri,一般是自己的 docker 所在环境:2375--><docker.host>http://localhost:2375</docker.host><!--镜像推送及拉取地址--><docker.registry>docker.io</docker.registry><!-- namespace 使用本人 docker 用户名 --><docker.namespace>xxx</docker.namespace><docker.username>xxx</docker.username><docker.password>xxx</doc...
Maven 常用插件(长期整理)
maven-compiler-plugin这个插件是用来编译源代码的。 例如报错 static import declarations are not supported in -source 1.3,这是因为编译的时候默认是 1.3 版本。可以设定编译器的版本为 1.6。 注意:target 版本一定大于等于 source 版本。 用法: 12345678910111213<build> <plugins> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-compiler-plugin</artifactId> <version>2.3.2</version> <configuration> <source>1.6<...
配置 Maven 第三方仓库地址的两种方式
Mirror 与 Repositories 的区别Mirror mirror 相当于一个拦截器,它会拦截 Maven 对 remote repository 的相关请求,把请求里的 remote repository 地址重定向到 mirror 里配置的地址。 Repositories 步骤一:优先查询本地仓库地址是否存在,不存在,继续; 步骤二:从配置的 center repository 下载,没找到,继续; 步骤三:依次从配置的 <repositories> 下配置的一个或者多个远程仓库下载,如果均请求不到,就会报错了。 Maven 最佳配置 配置 mirror,避免中央镜像墙内网络问题 配置远程仓库地址,避免有些资源从单一仓库无法下载下来 方式一:全局配置可以添加阿里云的镜像到 Maven 的 setting.xml 配置中,这样就不需要每次在 pom 中添加镜像仓库的配置,在 mirrors 节点下面添加子节点: 配置镜像注: Maven 默认中央仓库的 id 为 central。id 是唯一的。因此可以使用 <id>central</i...
