簡體   English   中英

PMD + Maven + JAVA錯誤::無法找到資源rulesets / comments.xml。 確保資源是有效的文件或URL,或者位於CLASSPATH上

[英]PMD+Maven+JAVA Error:: Can't find resource rulesets/comments.xml. Make sure the resource is a valid file or URL or is on the CLASSPATH

在添加PMD的自定義規則集時,maven產生錯誤 - net.sourceforge.pmd.RuleSetNotFoundException: Can't find resource rulesets/comments.xml.Make sure the resource is a valid file or URL or is on the CLASSPATH

對於其他規則集,如基本,命名等,它沒有給出任何錯誤。但是當我添加新的規則集時,它產生了錯誤。 我也試過<rule ref="rulesets/java/comments.xml/CommentRequired"/>但它也給出了同樣的錯誤。 comments.xml已在pmd-5.0.2.jar文件中提供。

我的POM.xml

<dependencies>
    <dependency>
        <groupId>junit</groupId>
        <artifactId>junit</artifactId>
        <version>4.11</version>
        <scope>test</scope>
    </dependency>

    <dependency>
        <groupId>pmd</groupId>
        <artifactId>pmd</artifactId>
        <version>5.0.2</version>
    </dependency>

</dependencies>
<build>
    <plugins>
        <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-javadoc-plugin</artifactId>
            <version>2.9.1</version>
            <executions>
                <execution>
                    <id>attach-javadocs</id>
                    <goals>
                        <goal>jar</goal>
                    </goals>
                    <configuration>
                        <outputDirectory>${project.build.directory}/site/
                        </outputDirectory>
                        <reportOutputDirectory>${project.reporting.outputDirectory}/site/
                        </reportOutputDirectory>
                    </configuration>
                </execution>
            </executions>
        </plugin>
        <plugin>

            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-pmd-plugin</artifactId>
            <version>2.7.1</version>
            <configuration>
                <targetjdk>1.6</targetjdk>
                <skip>fasle</skip>
                <failOnViolation>false</failOnViolation>
                <failurePriority>4</failurePriority>
                <verbose>true</verbose>
                <rulesets>
                    <ruleset>src/main/resources/rulesets/MyRuleSet.xml</ruleset>
                </rulesets>
            </configuration>
            <executions>
                <execution>
                    <id>check</id>
                    <goals>
                        <goal>check</goal>
                    </goals>
                </execution>
                <execution>
                    <id>cpd-check</id>
                    <goals>
                        <goal>cpd-check</goal>
                    </goals>
                </execution>
            </executions>
        </plugin>
    </plugins>
</build>
<reporting>
    <plugins>
        <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-jxr-plugin</artifactId>
            <version>2.3</version>
        </plugin>
    </plugins>
</reporting>

我的自定義規則集文件

<?xml version="1.0"?>
<ruleset>

<rule ref="rulesets/logging-java.xml/SystemPrintln">
    <priority>3</priority>
</rule>
<rule ref="rulesets/naming.xml/VariableNamingConventions">
    <priority>3</priority>
</rule>
<rule ref="rulesets/design.xml/UseSingleton">
    <priority>3</priority>
</rule>
<rule ref="rulesets/controversial.xml/UseConcurrentHashMap">
    <priority>3</priority>
</rule>
<rule ref="rulesets/basic.xml/OverrideBothEqualsAndHashcode">
    <priority>3</priority>
</rule>

<rule ref="rulesets/comments.xml/CommentRequired">
    <priority>3</priority>
</rule>
</ruleset>

這是我的maven stacktrace

    INFO] ------------------------------------------------------------------------
net.sourceforge.pmd.RuleSetNotFoundException: Can't find resource rulesets/comments.xml. Make sure the resource is a valid file or URL or is on the CLASSPATH
    at net.sourceforge.pmd.util.ResourceLoader.loadResourceAsStream(ResourceLoader.java:28)
    at net.sourceforge.pmd.RuleSetFactory.parseRuleReferenceNode(RuleSetFactory.java:365)
    at net.sourceforge.pmd.RuleSetFactory.parseRuleNode(RuleSetFactory.java:255)
    at net.sourceforge.pmd.RuleSetFactory.parseRuleSetNode(RuleSetFactory.java:209)
    at net.sourceforge.pmd.RuleSetFactory.createRuleSet(RuleSetFactory.java:157)
    at net.sourceforge.pmd.RuleSetFactory.createRuleSet(RuleSetFactory.java:146)
    at org.apache.maven.plugin.pmd.PmdReport.generateReport(PmdReport.java:222)
    at org.apache.maven.plugin.pmd.PmdReport.execute(PmdReport.java:175)
    at org.apache.maven.plugin.pmd.PmdReport.executeReport(PmdReport.java:149)
    at org.apache.maven.reporting.AbstractMavenReport.generate(AbstractMavenReport.java:190)
    at org.apache.maven.reporting.AbstractMavenReport.execute(AbstractMavenReport.java:99)
    at org.apache.maven.plugin.DefaultBuildPluginManager.executeMojo(DefaultBuildPluginManager.java:106)
    at org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:208)
    at org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:153)
    at org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:145)
    at org.apache.maven.lifecycle.internal.MojoExecutor.executeForkedExecutions(MojoExecutor.java:364)
    at org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:198)
    at org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:153)
    at org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:145)
    at org.apache.maven.lifecycle.internal.LifecycleModuleBuilder.buildProject(LifecycleModuleBuilder.java:84)
    at org.apache.maven.lifecycle.internal.LifecycleModuleBuilder.buildProject(LifecycleModuleBuilder.java:59)
    at org.apache.maven.lifecycle.internal.LifecycleStarter.singleThreadedBuild(LifecycleStarter.java:183)
    at org.apache.maven.lifecycle.internal.LifecycleStarter.execute(LifecycleStarter.java:161)
    at org.apache.maven.DefaultMaven.doExecute(DefaultMaven.java:318)
    at org.apache.maven.DefaultMaven.execute(DefaultMaven.java:153)
    at org.apache.maven.cli.MavenCli.execute(MavenCli.java:555)
    at org.apache.maven.cli.MavenCli.doMain(MavenCli.java:214)
    at org.apache.maven.cli.MavenCli.main(MavenCli.java:158)
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
    at java.lang.reflect.Method.invoke(Method.java:597)
    at org.codehaus.plexus.classworlds.launcher.Launcher.launchEnhanced(Launcher.java:290)
    at org.codehaus.plexus.classworlds.launcher.Launcher.launch(Launcher.java:230)
    at org.codehaus.plexus.classworlds.launcher.Launcher.mainWithExitCode(Launcher.java:414)
    at org.codehaus.plexus.classworlds.launcher.Launcher.main(Launcher.java:357)

該插件只能理解絕對路徑。 嘗試絕對路徑,它應該工作。 請參閱文檔。

為了使其獨立於本地文件系統布局,請使用${basedir}來引用本地路徑。

它必須是“rulesets / java / comments.xml”而不是“rulesets / comments.xml”。

我懷疑是,你從過時的文檔的某些部分中選擇了“rulesets / comments.xml”,或者在發布之前沒有經過測試。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM