0

maven 重复查找器插件看起来是一种检测相同资源何时存在于多个模块中的好方法。我需要的是更简单的东西:在同一个模块中检测相同的资源。

更新:针对 maven 重复查找器插件提交了一个问题,以查看它是否可以检测到这种情况。)

这是 Maven 重复查找器插件无法检测到我关心的那种情况的演示:

$ cat pom.xml
<project xmlns="http://maven.apache.org/POM/4.0.0"
  xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  xsi:schemaLocation="http://maven.apache.org/POM/4.0.0
                      http://maven.apache.org/xsd/maven-4.0.0.xsd">
  <modelVersion>4.0.0</modelVersion>

  <groupId>com.stackoverflow.mattmchenry</groupId>
  <artifactId>mvn-dups</artifactId>
  <version>1.0</version>

  <build>
    <resources>
      <resource>
        <directory>src/main/resources</directory>
      </resource>
      <resource>
        <directory>src/main/resources_es</directory>
      </resource>
    </resources>
  </build>
</project>

$ find src/ -type f
src/main/resources/Strings_es.properties
src/main/resources/Strings.properties
src/main/resources_es/Strings_es.properties    

$ mvn com.ning.maven.plugins:maven-duplicate-finder-plugin:1.0.2:check[INFO] Scanning for projects...
[INFO] ------------------------------------------------------------------------
[INFO] Building Unnamed - com.stackoverflow.mattmchenry:mvn-dups:jar:1.0
[INFO]    task-segment: [com.ning.maven.plugins:maven-duplicate-finder-plugin:1.0.2:check]
[INFO] ------------------------------------------------------------------------
[INFO] [duplicate-finder:check {execution: default-cli}]
[INFO] Checking compile classpath
[INFO] Checking runtime classpath
[INFO] Checking test classpath
[INFO] ------------------------------------------------------------------------
[INFO] BUILD SUCCESSFUL
[INFO] ------------------------------------------------------------------------
[INFO] Total time: 1 second
[INFO] Finished at: Thu Nov 22 22:44:40 EST 2012
[INFO] Final Memory: 7M/88M
[INFO] ------------------------------------------------------------------------
4

2 回答 2

2

在这种特定情况下,duplicate-finder 插件无法帮助您。

问题是它适用于类路径,而不是源文件夹。其中,在 Maven 案例中,由目标中的本地文件夹和工件组成。如果您有多个资源源文件夹(在您的情况下src/main/resourcessrc/main/resources_es),这些文件将target/classes在插件实际运行之前由 maven 复制到,因此它无法检测到这种情况。

重复查找器插件只能提供帮助

  • 如果多个资源文件夹最终出现在单独的工件(jar)中
  • 如果其中一个资源用于编译文件夹(目标/类),一个用于测试(目标/测试类)

重复查找器插件从不查看源文件夹,只查看类路径文件夹。

(我是该插件的主要作者之一。)

于 2014-12-29T05:38:01.980 回答
0

为什么不使用 maven-duplicate finder 插件,这正是您需要的工作?另一种解决方案是使用maven-enforcer-plugin,但看起来您需要实现自己的 enforcer-rule。我更喜欢使用 maven-duplicate-finder-plugin。

于 2012-11-22T10:14:16.957 回答