Devops学习实践(四) jenkins通过maven或ant集成checkstyle

Jenkins基础教程(137)Jenkins代码质量之使用Maven 构建作业:别让烂代码玷污你的Jenkins!Maven构建与代码质量检查实战 对于开发者而言,最尴尬的时刻莫过于刚提交的代码导致整个项目构建失败,或者更糟——默默引入了难以察觉的bug直到生产环境才爆发。但不用担心,Jenkins配合Maven正是解决这一痛点的良药。今天,我们将深入探索如何利用Jenkins自动化代码质量检查,让你的代码库始终保持健康状态。 阅读详情

随着工作的要求,devops作为今年工作的一个重点,由此也引发了自己对于devops相关的工具和技术的学习和实践。基于上述背景,这个系列将逐步的介绍SVN的安装和配置、jenkins安装和配置、reviewboard、findbugs、checkstyle、sonar、testng、mockito等。【每个合格的程序员都是耐操的】

         这一节我们来说说Jenkins的集成checkstyle

一、目标:

        1、在jenkins中集成checkstyle

        2、通过maven 来集成 checkstyle

        3、通过ant  来集成 checkstyle

        4、了解checkstyle 规则

      二、环境说明

如前面所述,环境依然是:

          1、本机:开发机 192.168.136.1,eclipse

          2、虚拟机:win 7  192.168.136.100   SVN服务器

          3、虚拟机:centos6.5   192.168.136.144  Jenkins部署服务器

       三、实践过程

  基于maven 和基于ant的checkstyle 集成,有所不同, 基于maven的不需要下载checkstyle jar包,maven 就帮你搞定了。基于ant的需要下载jar包,格式文件等。

          3.1、 基于maven的方式,集成checkstyle

    3.1.1 首先下载checkstyle 插件,参见下图:


          

      在网络允许的情况下,可以直接安装,如果网络不行,也可以采用下载安装包,手工加入的方式(网上有介绍)


       3.1.2  项目的构建

在项目的构建配置中,在maven处添加 goals项目:   checkstyle:checkstyle


   3.1.3 构建后的发布

在构建后的操作中,添加publish ,发布构建的结果,这里是发布 checkstyle的结果:


    3.1.4  检查构建发布的结果

    如果构建成功,如果代码被检查出符合规则的bug,就在在构建工程状态处显示checkstyle warnnings,如果没有,说明代码通过检测,质量非常好。下图是checkstyle result 的结果,可以查看检查出来的问题细节,进行修改。


    多次的构建后,还会看到checkstyle的趋势图。


     3.1.6 自定义规则

     可以自己定义检查的规则,并在编译配置文件中进行设置: 下图是在pom.xml 中添加checkstyle的配置项目,红框处是指定自己的检查规则文件


     这里提供一下上面图中的pom.xml完整的代码:

<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
  <modelVersion>4.0.0</modelVersion>
  <groupId>com.newland</groupId>
  <artifactId>StudyKafkaMavenTest</artifactId>
  <version>0.0.1-SNAPSHOT</version>
 
  <name>kafka-demo</name>
        <url>http://maven.apache.org</url>

        <properties>
                <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
                <!--checkstyle.config.location>/home/nmc/dev/devops/jenkins/newland-check.xml</checkstyle.config.location-->
        </properties>

  <dependencies>
    <dependency>
        <groupId>org.apache.kafka</groupId>
        <artifactId>kafka_2.10</artifactId>
        <version>0.8.2.0</version>
    </dependency>
  </dependencies>
<build>
    <defaultGoal>compile</defaultGoal>
<plugins>
<plugin>

<groupId>org.codehaus.mojo</groupId>

<artifactId>findbugs-maven-plugin</artifactId>

<version>3.0.1</version>

<configuration>

<excludeFilterFile>findbugs-exclude.xml</excludeFilterFile>

<findbugsXmlOutput>true</findbugsXmlOutput>

<findbugsXmlWithMessages>true</findbugsXmlWithMessages>

<xmlOutput>true</xmlOutput>

</configuration>

</plugin>

<!-- here  set  checkstyle-->
           <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-checkstyle-plugin</artifactId>
                <version>2.16</version>
                <configuration>
                    <consoleOutput>false</consoleOutput>
                    <outputFileFormat>xml</outputFileFormat>
                    <configLocation>/home/nmc/dev/devops/jenkins/newland-check.xml</configLocation>
                    <linkXRef>false</linkXRef>
                </configuration>

            </plugin>

</plugins>
</build>

<reporting>
        <plugins>
                <plugin>
                        <groupId>org.codehaus.mojo</groupId>
                        <artifactId>findbugs-maven-plugin</artifactId>
                        <version>3.0.1</version>
                        <configuration>
                                <findbugsXmlOutput>true</findbugsXmlOutput>
                                <findbugsXmlWithMessages>true</findbugsXmlWithMessages>
                                <xmlOutput>true</xmlOutput>
                        </configuration>
                </plugin>

            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-checkstyle-plugin</artifactId>
                <version>2.16</version>
                <configuration>
                    <configLocation>/home/nmc/dev/devops/jenkins/newland-check.xml</configLocation>
                 </configuration>

            </plugin>

        </plugins>
</reporting>
</project>
    至于检查规则,可以自己根据实际情况进行修改和配置:


    3.2 通过ant 来集成checkstyle

    通过ant ,可以对checkstyle进行集成,由于ant的特性,需要下载 checkstyle相关的几个文件,不建议下载太高版本

    checkstyle-5.6-all.jar
    checkstyle-author.xsl

    下载后,连同 newland-check.xml,一起部署到jenkins 的workspace下,可以建立一个 CHECKSTYLE_COMM  目录来存放

     3.2.1 编写编译配置文件

      在这个目录下,我们需要编写一个编译文件,这个编译文件,只涉及checkstyle自己本身的内容,在jenkins集成任务里面,在构建的时候,在ant 编译代码完成后,可以进行另外一个ant构建,进行checkstyle的编译,这样就防止了项目自己的编译文件与checkstyle的紧耦合。

    下面就是这个编译文件的内容:

    

<?xml version="1.0" encoding="UTF-8"?>
<project name="check" default="default" basedir=".">

	<property name="src.dir" value="${basedir}/src" />
	<property name="class.dir" value="${basedir}/WebRoot/WEB-INF/classes" />
	<property name="dist.dir" value="${basedir}/dist" />
  <property name="checkstyle.dir" value="${basedir}/../CHECKSTYLE_COMM"/>
   
  <taskdef name="checkstyle" classname="com.puppycrawl.tools.checkstyle.CheckStyleTask"
      classpath="${checkstyle.dir}/checkstyle-5.6-all.jar" />  
   <target name="checkstyle"  description="Generates a report of code convention violations.">     
       <mkdir dir="${basedir}/checkstyle" /> 
       <checkstyle config="${checkstyle.dir}/newland-check.xml" failureProperty="checkstyle.failure"  failOnViolation="false">   
            <formatter type="xml"   tofile="${basedir}/checkstyle/checkstyle_report.xml" />   
           <fileset dir="${src.dir}" includes="**/*.java" />
       </checkstyle>
       <taskdef resource="checkstyletask.properties"
           classpath="${checkstyle.dir}/checkstyle-5.6-all.jar"/>
       <xslt in="${basedir}/checkstyle/checkstyle_report.xml" out="${basedir}/checkstyle/checkstyle_report.html"
           style="${checkstyle.dir}/checkstyle-author.xsl" />   

    </target>    
   <target name="default" depends="checkstyle">
	 </target>

</project>

    3.2.2 修改构建内容

    在jenkins里面,修改项目的构建内容,首先,在第一个构建中,添加一个copy动作,将checkstyle的编译依赖文件从公共目录拷贝到项目目录。

    

    然后在构建中,添加第二个ant 调用动作,这样就将打包和代码检查动作解耦

    

    在构建后动作里面与maven集成类似,一样是进行check结果的发布,指定结果文件等等,这里不在重复

     最后,附上一个截图,说明ant调用打包和checkstyle的日志打印信息。

    

        上图中:

        1: 是构建的第一个动作,ant 编译打包

         2:是拷贝检查的ant 配置文件到项目下

         3:是构建的第二个ant 动作,只检查代码

      四、小结

 jenkins 可以通过maven 或者ant 来进行代码走查,并发布检查结果。利用jenkins 的构建任务的灵活性,可以进行多次构建,将编译打包和检查步骤进行解耦,分步执行,既保有项目的灵活性,又能进行走查。





Jenkins持续集成与部署(CI/CD)实战指南 持续集成(CI)是现代软件开发的核心实践,通过自动化构建和测试确保代码质量。Jenkins作为领先的开源CI/CD工具,基于Java开发,提供强大的自动化能力。其核心原理是通过插件体系集成各类开发工具,支持分布式构建和流水线即代码。技术价值体现在缩短交付周期、提高软件质量、降低集成风险。典型应用场景包括Web应用部署、微服务架构和DevOps流程。本文重点介绍Jenkins安装配置、流水线开发和插件管理,特别针对Docker和Kubernetes集成提供了详细方案。 阅读详情

相关推荐

DevOps实操十大问题:从踩坑到落地的工程化指南

DevOps不是抽象理念,而是解决‘代码如何可靠交付’这一核心工程问题的技术实践。其本质在于构建可重复、可验证、可度量的软件交付流水线,关键原理涵盖环境一致性、测试真实性、告警业务语义化、发布策略匹配数据模型等。技术价值体现在显著缩短上线周期、降低故障恢复时间、提升变更成功率,并支撑金融、电商、SaaS等高敏业务的稳定迭代。典型应用场景包括CI/CD流水线卡点设计、Kubernetes发布策略选型、日志与监控的精准采集、基础设施即代码(IaC)权责分离等。本文聚焦真实团队三年高频踩坑场景,直击Docker镜

weixin_34060299的博客 359

Jenkins Pipeline(三)

1 概述 1.1 概念 Pipeline,简单来说,就是一套运行在 Jenkins 上的工作流框架,将原来独立运行于单个或者多个节点的任务连接起来,实现单个任务难以完成的复杂流程编排和可视化的工作。 1.2 优点 代码:Pipeline以代码的形式实现,通常被检入源代码控制,使团队能够编辑,审查和迭代其传送流程。 持久:无论是计划内的还是计划外的服务器重启,Pipeline都是可恢复的。 可停止:Pipeline可接收交互式输入,以确定是否继续执行Pipeline。 多功能:Pipeline支持现实世界中

qq_34125999的博客 2392

AI赋能静态代码分析:十大工具全景解析与落地实践

静态代码分析作为软件质量保障的基石,通过在不运行程序的情况下对源代码进行扫描,旨在提前发现代码缺陷、安全漏洞和规范违规。其核心原理是基于预定义规则集进行模式匹配和语法分析。随着微服务、云原生等现代架构的普及,代码库日益庞大复杂,传统规则库在应对海量代码、理解复杂业务上下文和预测深层缺陷方面面临挑战。AI技术,特别是大语言模型和机器学习,为静态分析注入了语义理解和智能推理能力,能有效提升告警信噪比、支持定制化规则,并实现缺陷预测。这推动了静态分析从“规则扫描”向“智能洞察”跃迁,其技术价值在于将质量防线左移至

weixin_30268071的博客 292

jenkins 集成 checkstyle

jenkins,checkstyle

global_coding的博客 1458

测试左移实践:PR级别自动触发测试与质量门禁全解析

在软件工程领域,持续集成(CI)和持续交付(CD)是提升研发效能的核心实践。其原理在于通过自动化流水线,将代码集成、构建、测试和部署等环节串联,实现快速、可靠的软件交付。这一技术的核心价值在于缩短反馈周期,降低集成风险,并保障软件质量。在敏捷开发和DevOps文化背景下,测试左移(Shift Left)成为关键策略,旨在将质量保障活动前置到开发早期。通过PR(Pull Request)级别的自动触发测试和质量门禁,团队能够在代码合并前及时发现缺陷,将问题扼杀在低成本阶段。本文聚焦于如何利用GitHub Ac

weixin_30889885的博客 462

DDR内存条选购避坑指南:单Rank vs 双Rank性能实测对比(附2024年颗粒推荐)

本文深入解析了内存条中单Rank与双Rank设计的原理与性能差异。通过实战测试对比,揭示了双Rank内存在高负载场景(如3D渲染、视频剪辑)中凭借Rank Interleaving技术带来的显著性能优势,并提供了2024年针对不同用户需求的DDR4/DDR5内存选购策略与避坑指南。

ik678901的博客 1132

Jenkins+maven+checkstyle对java代码进行静态代码分析

转载注意出处 by  whhuang Maven官方配置说明:http://maven.apache.org/plugins/maven-checkstyle-plugin/ 一、Pom的配置 1、  在里增加checkstyle的配置 代码如下:                                             org.apache.maven.

测试蜗牛,一步一个脚印 1万+

告别C盘空间焦虑!Miniforge环境路径精准配置全攻略

本文深入解析Miniforge虚拟环境默认占用C盘空间的根本原因,即未正确配置`.condarc`文件中的`envs_dirs`路径优先级。通过详细的诊断步骤与配置命令,指导用户将环境路径精准迁移至指定磁盘(如D盘),并分享禁用自动激活、使用`--prefix`参数等高阶技巧,帮助开发者彻底告别C盘空间焦虑,实现虚拟环境的整洁与可控管理。

weixin_28831399的博客 238

checkstyle+eclipse/jenkins对代码规范检查的应用

一、checkstyle+eclipse 1. 认识Checkstyle CheckStyle是SourceForge下的一个项目,提供了一个帮助Java开发人员遵守某些编码规范的工具。它能够自动化代码规范检查过程,从而使得开发人员从这项重要但枯燥的任务中解脱出来。它可以根据设置好的编码规则来检查代码。比如符合规范的变量命名,方法体的最大行数,重复代码检查等等。 2. Checkstyle插...

胡子的博客 986

从时序迷宫到稳定通信:FSMC配置中的时间参数深度解析与实战避坑指南

本文深入解析STM32 FSMC配置中的时间参数,特别是AddressSetupTime和DataSetupTime的实战配置技巧。通过STM32F407连接SRAM的实际案例,提供从理论计算到CubeMX配置的全流程指南,帮助开发者避免常见时序陷阱,确保稳定通信。

nginx7reverse的博客 83

Android SystemUI——初始化流程(三)

1、Android 系统在启动之后,首先会Zygote进程,Zygote进程又会进一步启动 SystemServer进程,它会启动各种系统所需要的服务,在监听AMS启动完毕之后,还会启动SystemUIService。2、在启动SystemUIService服务之前,系统首先会创建SystemUI对应的进程,获取SystemUIAppComponentFactory实例对象,调用instantiateApplicationCompat创建SystemUIApplication实例对象并设置回调方法。

小旭的专栏 1158

Jenkins Maven checkstyle findbugs pmd静态代码检查

公司其他java和安卓项目都是用Gradle做配置管理,jenkins集成后使用静态代码检查工具没有问题,现在其他项目组使用Maven作为配置管理,对Maven研究了一哈,窃以为还是Gradle的语法更加简洁。 第一步还是确认环境,需要在jenkins哪里安装maven并进行环境配置,一切都是常规安装,修改profile文件之后执行mvn验证,如果没有问题会看到以下代码 [INFO] Sc

JackyZheng 4406

csp信奥赛C++标准模板库STL案例应用1

csp信奥赛C++标准模板库STL案例应用1

王老师青少年编程 1382

Jenkins+Maven+Git自动化部署实战:从零搭建生产级Java CI/CD流水线

持续集成与持续部署(CI/CD)是现代软件工程的核心实践,旨在通过自动化流程提升开发效率和软件质量。其核心原理在于将代码提交、构建、测试、部署等环节串联为自动化流水线,实现快速、可靠的软件交付。在Java技术栈中,Jenkins作为开源的自动化服务器,结合Maven构建工具和Git版本控制系统,构成了经典的CI/CD解决方案。这套组合能够显著减少人工干预,确保环境一致性,并实现快速反馈与回滚,广泛应用于微服务、Web应用等后端项目的自动化构建与部署场景。本文以Jenkins为核心,详细讲解如何结合Maven

weixin_30263277的博客 429

【UE5】RTS游戏的框选功能+行军线效果实现

步骤: 一、项目准备; 二、框选NPC并移动到指定地点; 三、框选效果; 四、行军线效果

ChaoChao66666的博客 2379

以太网_RGMII接口与GMII接口的转化_03

RGMII接口转GMII接口!

weixin_42499230的博客 378

'Master Jenkins CI For DevOps and Developers'课程总结 - 1

在Maven项目里添加Java静态代码质量检查并发布报告 需要的插件: Maven Integration plugin Checkstyle Plug-in 具体步骤: 新建job,选择Freestyle project。 Source Code Management选择Git,填入Repository URL。 Build中添加Invoke top-level Maven tar...

python012的专栏 252

3、灵巧手的设计与构造

本文详细探讨了灵巧手的设计与构造,包括多指结构、关节和连杆设计、传感器集成以及分层控制架构等内容。同时,通过工业装配、医疗手术辅助和日常生活辅助等实际应用案例,展示了灵巧手的灵活性和适应性,并分析了当前设计面临的挑战及未来发展方向。

brandy的博客 491

DevOps - CI/CD - Jenkins

Jenkins 是一款流行的开源持续集成(Continuous Integration)工具,广泛用于项目开发,具有自动化构建、测试和部署等功能。本文以 CentOS7 环境为例,总结了 Jenkins 的安装与配置、邮件功能使用,并接入阿里巴巴的著名开源项目 fastjson,以此演示 Java 项目(SVN+Maven)中 FindBugs/CheckStyle/PMD 等常...

weixin_30307921的博客 180

复分析 阿尔福斯(Ahlfors) 第三版答案 英文

答案分为十章,有部分习题没有答案,全英文复分析阿尔福斯(Ahlfors) 第三版答案

LinePhone3.2.7(android端最新版本) sip客户端

SIP客户端For android:LinePhone3.2.7(最新版本),官网地址:http://www.linphone.org/

Maven硬核工程实践:从依赖管理到智能构建的完整指南

在Java项目开发中,依赖管理和标准化构建是提升工程效率的基础。Maven作为项目对象模型(POM)的核心,通过坐标机制和仓库体系,实现了依赖的自动解析与版本控制,解决了传统手动管理JAR包的混乱问题。其构建生命周期和插件架构,将编译、测试、打包等环节标准化,为持续集成和DevOps流水线提供了可靠基础。在工程实践中,通过配置镜像仓库、管理多模块项目、优化构建性能,Maven能成为高度自动化的“智能体”。本文聚焦于硬核智能体工程理念,深入讲解如何通过Maven实现从环境配置、核心概念到Spring Boot

weixin_34310369的博客 394

WINCC7.3破解文件

WINCC7.3硬件够破解文件,有需要的下载!WINCC7.3硬件够破解文件,有需要的下载!

2026开发者核心工作流:DevOps平台工程与AI增强开发实战指南

在软件工程领域,持续集成与持续部署(CI/CD)是现代开发流程自动化的基石,其核心原理是通过自动化工具链将代码变更快速、可靠地集成、测试并交付到生产环境。这一技术价值在于显著提升软件交付效率、保障发布质量并降低人工操作风险。随着云原生和容器化技术的普及,CI/CD的应用场景已从大型团队扩展至个人开发者与小规模项目,成为构建标准化交付管道的必备实践。与此同时,人工智能技术正深度融入开发环节,以代码生成、智能补全和自动化调试等方式,辅助开发者提升编码效率与代码质量。本文聚焦于如何将DevOps/平台工程工作流与

weixin_34384557的博客 467

数学建模模型总结

这是本人在两年内准备参加数学建模竞赛搜集到的模型资料,已经经过了本人的筛选和整理,希望能够对准备参加数学建模竞赛的学弟学妹们提供一些帮助!

Docker与CI/CD全流程实践:从代码提交到生产部署的自动化方案

Docker作为容器化技术的核心,通过镜像分层机制确保应用环境的一致性,解决了传统部署中环境差异的痛点。其原理基于轻量级虚拟化,将应用及其依赖打包成标准单元。结合CI/CD持续集成与持续部署流程,实现了从代码提交到生产环境的全自动化。这种技术组合在微服务架构和云原生场景下价值显著,能够大幅提升软件交付速度和质量。本文以Docker镜像构建和Jenkins流水线为例,展示了企业级容器化CI/CD的最佳实践,包括多阶段构建优化、Kubernetes部署等关键环节。

weixin_34294649的博客 306

开源项目寻宝指南:从筛选到生产环境的最佳实践

开源项目是现代软件开发的核心基础设施,其本质是代码共享与协作开发的典范。其原理基于开放源代码许可证,允许开发者自由使用、修改和分发软件。这一模式的技术价值在于加速创新、降低研发成本,并通过社区协作确保代码质量与安全性。在实际应用场景中,开发者常利用开源项目进行技术选型、快速原型搭建和系统架构学习。为了高效利用这些资源,掌握项目筛选方法论至关重要,这包括评估项目活跃度、社区健康度、代码质量及许可证合规性。例如,通过分析项目的最近提交频率、Issue处理情况以及贡献者分布,可以判断其维护状态;同时,结合依赖管理

weixin_30608503的博客 296

程序员工作全景:从需求到运维的完整工作流与核心技能

软件开发生命周期(SDLC)是指导软件从概念到退役的系统化过程,其核心在于将复杂问题分解为可管理的阶段。其原理是通过需求分析、设计、实现、测试、部署和维护等环节的迭代与协作,确保软件质量与交付效率。这一流程的技术价值在于降低风险、提升可维护性并促进团队知识共享。在实际应用场景中,开发者不仅需要编写代码,更需要参与需求评审澄清业务逻辑,并通过技术方案设计(如数据库表设计与API接口定义)来构建稳健的系统基础。例如,在实现用户注册功能时,需综合考虑数据一致性、安全性与性能,这自然涉及到代码审查与单元测试等质量保

weixin_30780649的博客 423

软件工程实践:从复杂需求拆解到代码质量保障的完整指南

在软件工程领域,复杂性管理和细节控制是项目成功的关键。其核心原理在于通过分解与抽象思维将复杂问题简化,同时借助严谨的自动化流程确保细节质量。这一理念的技术价值在于显著提升开发效率、降低维护成本,并增强系统的可维护性与团队协作效能。常见的应用场景包括微服务架构设计、大型系统重构以及团队协作开发。通过引入API First设计、持续集成/持续部署(CI/CD)等现代工程实践,开发者能够将宏观理念转化为具体的代码规范、自动化测试和部署流水线,从而在实战中有效应对需求混乱和代码腐化等挑战。

weixin_33868027的博客 456

软件工程Flag作业:从学生目标到工程能力成长契约

软件工程不是单纯教编码,而是培养系统思维与工程化交付能力。Feature Flag(功能开关)作为现代DevOps核心实践,象征可控发布、灰度验证与快速回滚的工程哲学;CI/CD则代表从代码提交到自动部署的全链路质量保障机制。理解这些概念,有助于开发者建立‘写代码→提PR→构建→测试→部署→监控’的最小闭环能力,支撑真实协作、质量可信与团队基线建设。本文以高校软件工程课程中的Flag作业为切入点,解析学生诉求如何映射工业级工程能力图谱,并提供可落地的OKR转化路径与教学反哺方法。

weixin_30698297的博客 295
上一篇: Devops学习实践(三) jenkins集成findbugs
下一篇: CDH5.0.2实践(四)离线安装实践
虎纠卫
博客等级 码龄24年 440粉丝 120原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值