我正在使用Ant为* / .html文件运行基于自定义正则表达式的checkstlye。这是非常简单的配置。 Ant build.xml:
<taskdef resource="checkstyletask.properties" classpath="checkstyle-5.5-all.jar"/>
<target name="check">
<checkstyle config="checks.xml" failOnViolation="false">
<fileset dir="${basedir}" includes="**/*.html"/>
<formatter type="plain"/>
<formatter type="xml" toFile="${basedir}/reports/checkstyle-report.xml"/>
</checkstyle>
</target>
checks.xml:
<module name="Checker">
<property name="charset" value="UTF-8"/>
<module name="RegexpMultiline">
<property name="format" value="\A.+<table>.+<\/table>.+\Z"/>
</module>
</module>
在Windows 7 64bit上:
Apache Ant(TM) version 1.8.3 compiled on February 26 2012,
BUILD SUCCESSFUL
Total time: 1 second
在CentOS 64bit上:
Apache Ant(TM) version 1.8.2 compiled on May 13 2011,
BUILD FAILED
build.xml:8: Unable to create a Checker: cannot initialize module RegexpMultiline - Unable to instantiate RegexpMultiline
有人可以提出建议吗?
谢谢,
答案 0 :(得分:1)
好的,所以简单地运行ant -v就会发现以下内容:
parsing buildfile jar:file:/usr/share/java/ant-1.8.2.jar!/org/apache/tools/ant/antlib.xml with URI = jar:file:/usr/share/java/ant-1.8.2.jar!/org/apache/tools/ant/antlib.xml from a zip file
...
[checkstyle] checkstyle version 4.4
[checkstyle] compiled on Mon December 06 2010, 21:35 GMT
因此,失败的原因与操作系统没有多大关系,因为版本和版本都是如此。 Ant安装的配置。
我认为正在发生的事情是v4.4检查式是从
中挑选出来的/usr/share/java/ant-1.8.2.jar!/org/apache/tools/ant/antlib.xml
优先于build.xml中指定的内容:
<taskdef resource="checkstyletask.properties" classpath="${basedir}/checkstyle/checkstyle-5.5-all.jar"/>
更新
我在/ usr / share / ant / lib /中找不到checkstyle.jar,但在/ usr / share / java /
中有一个不确定Ant是如何选择的,但最终解决了这个问题:
yum remove checkstyle4.noarch
现在Ant可以免费使用项目中的.jar!