开发自己的Maven插件之七:开发jslint4java-report plugin
来源:互联网 发布:淘宝店铺认证复核失败 编辑:程序博客网 时间:2024/05/17 00:13
现在你会看到我写这系列文章的真正目的。
jslint是一个Javascript检查工具,jslint4java是一个Java开发者提供的Java项目中很方便使用jslint来检查JavaScript代码的工具。该开发者还提供了jslint4java plugin用于maven项目。
现在简单介绍一下如何使用这个插件:
在你的Java web的maven项目中,pom.xml中添加如下配置:
<plugin><groupId>com.googlecode.jslint4java</groupId><artifactId>jslint4java-maven-plugin</artifactId><version>2.0.2</version><executions> <execution> <id>lint</id> <phase>process-resources</phase> <goals> <goal>lint</goal> </goals> <configuration> <failOnError>false</failOnError> <sourceFolders><sourceFolder>${basedir}/WebContent/js/app</sourceFolder> </sourceFolders> <options><undef>true</undef> </options> </configuration> </execution></executions> </plugin>当你执行mvn compile的时候,jslint4java plugin会检查WebContent/js/app目下的所有js文件,并且把结果显示在终端上,同时结果文件写到
target/jslint4java/目录下。
下面是我的项目中的部分扫描结果:
/home/chenshu/104/beacontower/GeoFlow/WebContent/js/app/flowModel.js:3:9: Missing 'use strict' statement.var name; ^/home/chenshu/104/beacontower/GeoFlow/WebContent/js/app/flowModel.js:14:9: Missing 'use strict' statement.var name; ^/home/chenshu/104/beacontower/GeoFlow/WebContent/js/app/flowModel.js:17:21: Combine this with the previous 'var' statement.
但是这个结果文件并没有被加入到site站点报告中,因此,我写了一个jslint4java-report plugin完成这件事情。
如何创建一个report-plugin工程和前面一样,现在仅仅看看实现代码:
package org.freebird;/* * Copyright 2001-2005 The Apache Software Foundation. * * Licensed under the Apache License, Version 2.0 (the "License"); you may not * use this file except in compliance with the License. You may obtain a copy of * the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the * License for the specific language governing permissions and limitations under * the License. */import java.io.File;import org.apache.maven.reporting.AbstractMavenReport;import org.apache.maven.reporting.MavenReportException;import java.util.Locale;import org.apache.maven.doxia.sink.Sink;import org.apache.maven.doxia.siterenderer.Renderer;import org.apache.maven.project.MavenProject;import java.io.FileReader;import java.io.BufferedReader;import java.io.IOException;/** * Goal which touches a timestamp file. * * @goal my-report * * @phase site */public class Jslint4JavaReport extends AbstractMavenReport { /** * Describe variable <code>resultFile</code> here. * * @parameter */ private File resultFile; private Renderer siteRenderer; @Override protected Renderer getSiteRenderer() { return siteRenderer; } @Override protected String getOutputDirectory() { return "${project.build.directory}/site/myreport"; } private MavenProject project; @Override protected MavenProject getProject() { return project; } /** * Describe <code>executeReport</code> method here. * * @param locale a <code>Locale</code> value * @exception MavenReportException if an error occurs */ @Override protected void executeReport(Locale locale) throws MavenReportException { Sink sink = getSink();if(!resultFile.exists()) { throw new MavenReportException("resultFile doesn't exit! Please check your configuration of jslint4java-report plugin");}if(!resultFile.canRead()) { throw new MavenReportException("can't read resultFile for jslint4java-report plugin");}FileReader reader = null;BufferedReader br = null;try { reader = new FileReader(resultFile); br = new BufferedReader(reader); String row; while((row = br.readLine()) != null) {sink.paragraph();sink.text(row);sink.paragraph(); }} catch(Exception ex) { throw new MavenReportException("Got exception when reading the result file in jslint4java-report plugin",ex);} finally { try{if(br != null) { br.close();}if(reader != null) { reader.close();} }catch(IOException ex){getLog().error(ex.getMessage(),ex); }} } /** * Describe <code>getOutputName</code> method here. * * @return a <code>String</code> value */ public String getOutputName() { return "jslint4java-report"; } /** * Describe <code>getName</code> method here. * * @param locale a <code>Locale</code> value * @return a <code>String</code> value */ public String getName(Locale locale) { return "jslint4java"; } /** * Describe <code>getDescription</code> method here. * * @param locale a <code>Locale</code> value * @return a <code>String</code> value */ public String getDescription(Locale locale) { return "The check result of java script codes using jslint4java"; }}
在executeReport方法中,将target/jslint4java/report.txt文件的内容读取出来,通过sink的函数创建一个属于site站点的报表。
下一节(最后一篇)会介绍如何得到target/jslint4java/report.txt文件路径的。
- 开发自己的Maven插件之七:开发jslint4java-report plugin
- 开发自己的Maven插件之八:使用jslint4java-report plugin
- 开发自己的Maven插件之六:使用自己的report-plugin
- 开发自己的Maven插件之五:创建简单的report plugin
- Cordova 开发属于自己的插件(plugin
- 开发自己的Maven插件
- 开发自己的Maven插件之三:使用插件
- 开发自己的Maven插件之四:基本概念
- Cordova 开发属于自己的插件(plugin)
- Cordova 开发属于自己的插件(plugin)
- Cordova 开发属于自己的插件(plugin)
- Cordova 开发属于自己的插件(plugin)
- Cordova 开发属于自己的插件(plugin)
- 开发自己的Maven插件之二:利用创建向导简化工作
- Eclipse插件开发之plugin.xml进阶
- 开发自己的Maven插件之一:hello world
- 开发自己的Maven插件之一:hello world
- Maven plugin 开发
- zoj 3551
- 有时候感觉自己挺那什么的
- Java系统程序员修炼之道
- android Google Map定位及创建画布标示坐标点
- php输出信息到文件
- 开发自己的Maven插件之七:开发jslint4java-report plugin
- 补习册
- 兼容手札
- hdu1251
- Windows Server 2003上安装IIS组件
- 2012 苹果第三代iPad3(NewPAD)发布会图文实录
- Run Loop
- 随笔三十:x = 0
- Java小技巧之运算符的妙用