Maven 配置,以便如果代码中出现 System.out.println 则构建失败

问题描述 投票:0回答:3

我们想从项目中删除所有system.out.println。

如何配置pom或者需要哪些依赖项。

谢谢, 阿尼尔

maven build pom.xml system.out
3个回答
3
投票

我正在使用 Maven PMD 插件来解决同样的问题。

1- 将插件添加到 pom.xml

    <plugins>
        <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-pmd-plugin</artifactId>
            <configuration>
                <rulesets>
                    <ruleset>${basedir}\src\main\resources\my-rules.xml</ruleset>
                </rulesets>
            </configuration>
        </plugin>
    </plugins

2- 将 my-rules.xml 放在项目资源文件夹下

<?xml version="1.0"?>
<ruleset name="Custom ruleset"
         xmlns="http://pmd.sourceforge.net/ruleset/2.0.0"
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://pmd.sourceforge.net/ruleset/2.0.0 http://pmd.sourceforge.net/ruleset_2_0_0.xsd">
    <description>
    </description>

    <rule ref="rulesets/java/logging-java.xml/SystemPrintln" />
    <rule ref="rulesets/java/logging-java.xml/AvoidPrintStackTrace"/>
    <rule ref="rulesets/java/basic.xml/OverrideBothEqualsAndHashcode"/>
    <rule ref="rulesets/java/empty.xml/EmptyFinallyBlock"/>
    <rule ref="rulesets/java/basic.xml/ReturnFromFinallyBlock" />
    <rule ref="rulesets/java/logging-java.xml/LoggerIsNotStaticFinal"/>
</ruleset>

2
投票

我个人没有这样做过,但请看一下FindBugs。 Maven 插件可以在这里找到。

您可以编写自己的自定义检测器来搜索

System.out.print
System.out.println
。欲了解更多信息,请参阅此网站:

http://www.ibm.com/developerworks/library/j-findbug2/


0
投票

我有一个多模块 Maven 项目并让它像这样工作。

(1) 将以下插件添加到root/parent pom.xml中

<build>
      ...
      <plugins>
        ...           
        <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-pmd-plugin</artifactId>
            <version>3.21.2</version>
            <configuration>
                <rulesets>
                    <ruleset>pmd-ruleset.xml</ruleset>
                </rulesets>
                <printFailingErrors>true</printFailingErrors>
            </configuration>
            <executions>
              <execution>
                <phase>validate</phase>
              </execution>
            </executions>
            <dependencies>
                <dependency>
                  <groupId>com.foo.group</groupId>
                  <artifactId>pmd-rules</artifactId>
                  <version>1.0.0</version>
                </dependency>
            </dependencies>
        </plugin>
    </plugins>
</build>

(2) 我创建了一个 pmd-ruleset.xml (其他配置有很多弃用)

<?xml version="1.0"?>
<ruleset name="Custom ruleset"
         xmlns="http://pmd.sourceforge.net/ruleset/2.0.0"
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://pmd.sourceforge.net/ruleset/2.0.0 http://pmd.sourceforge.net/ruleset_2_0_0.xsd">
    <description>
    </description>
    <rule ref="category/java/bestpractices.xml/SystemPrintln"/>
    <rule ref="category/java/bestpractices.xml/AvoidPrintStackTrace"/>
    <rule ref="category/java/errorprone.xml/OverrideBothEqualsAndHashcode"/>
    <rule ref="category/java/errorprone.xml/ReturnFromFinallyBlock" />
</ruleset>

(3) 围绕它创建一个 jar 文件并将其上传到我们的存储库(如 Nexus 或 Artifactory)。还创建了一个基本的 pom.xml

(4) 然后我用

mvn pmd:pmd pmd:cpd

运行它
© www.soinside.com 2019 - 2024. All rights reserved.