公司原来Java和安卓项目都是用Gradle做配置管理,现在其他项目组使用Maven作为配置管理,对Maven研究了之后也可以用Jenkins做集成了,不过经过比较还是觉得Gradle的语法更加简洁。
第一步还是确认环境,需要在Jenkins服务器安装maven并进行环境配置,一切都是常规安装,wget之后解压缩并修改profile文件之后执行mvn验证,如果没有问题会看到以下代码说明mvn安装成功,这时还需要在Global Tool Configure里进行Maven的环境配置,手动输入Maven的Home位置。配置完成执行mvn可以看到如下提示:
[INFO] Scanning for projects...
[INFO] ------------------------------------------------------------------------
[INFO] BUILD FAILURE
[INFO] ------------------------------------------------------------------------
[INFO] Total time: 0.067 s
[INFO] Finished at: 2017-06-20T17:06:08+08:00
第二步进行maven的pom.xml文件配置,checkstyle,findbugs,pmd的配置方法各不一样,findbugs和pmd需要增加report字段,checkstyle不需要
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-checkstyle-plugin</artifactId>
<version>${plugin.checkstyle.version}</version>
<configuration>
<configLocation>${project.basedir}/build/check-style.xml</configLocation>
<includeTestSourceDirectory>true</includeTestSourceDirectory>
<suppressionsLocation>${project.basedir}/build/check-style-suppression.xml</suppressionsLocation>
<consoleOutput>true</consoleOutput>
<failsOnError>false</failsOnError>
</configuration>
<executions>
<execution>
<phase>verify</phase>
<goals>
<goal>check</goal>
</goals>
</execution>
</executions>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-pmd-plugin</artifactId>
<version>${plugin.pmd.version}</version>
<configuration>
<rulesets>
<ruleset>build/pmd.xml</ruleset>
</rulesets>
<targetJdk>${project.build.jdk}</targetJdk>
<verbose>true</verbose>
</configuration>
<executions>
<execution>
<phase>verify</phase>
<goals>
<goal>check</goal>
<goal>cpd-check</goal>
</goals>
</execution>
</executions>
</plugin>
<plugin>
<groupId>org.codehaus.mojo</groupId>
<artifactId>findbugs-maven-plugin</artifactId>
<version>${plugin.findbugs.version}</version>
<configuration>
<excludeFilterFile>build/find-bugs-exclude-filter.xml</excludeFilterFile>
<!-- 加入findbugs的静态代码检查 @j-->
<threshold>Medium</threshold>
<effort>Default</effort>
<findbugsXmlOutput>true</findbugsXmlOutput>
<findbugsXmlWithMessages>true</findbugsXmlWithMessages>
<xmlOutput>true</xmlOutput>
<!-- findbugs xml输出路径-->
<!--<findbugsXmlOutputDirectory>target/site</findbugsXmlOutputDirectory>-->
</configuration>
<executions>
<execution>
<phase>verify</phase>
<goals>
<goal>check</goal>
</goals>
</execution>
</executions>
</plugin>
---------------------------------------------------------------------------------------------
<reporting>
<plugins>
<!-- findbugs pmd配置报告-->
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-surefire-report-plugin</artifactId>
<version>2.14.1</version>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-jxr-plugin</artifactId>
<version>2.1</version>
</plugin>
<plugin>
<groupId>org.codehaus.mojo</groupId>
<artifactId>cobertura-maven-plugin</artifactId>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-pmd-plugin</artifactId>
<version>3.0.1</version>
</plugin>
</plugins>
</reporting>
注意findbugs的输出路径需要注释掉,不然不是默认目录无法jenkins插件无法识别,另外checkstyle需要java的执行权限,需要赋予java执行文件的权限。
另外需要将<failsOnError>设置为false,否则可能因为错误太多而无法生成checkstyle报告。
第三步建立jenkins的job 并配置之后在Goals输入命令行clean package checkstyle:checkstyle findbugs:findbugs pmd:pmd (觉得这种命令行输入特别傻)
然后配置三个静态代码工具使之有效,这样在job界面里面会自动生成图形报告。