【问题标题】:Eclipse .classpath exclusion patternEclipse .classpath 排除模式
【发布时间】:2010-09-02 19:22:47
【问题描述】:

我看过这个:

<classpathentry excluding="**" kind="src" output="target/classes" path="src/main/resources"/>

在创建新的 Maven 项目时多次在我的 Eclipse .classpath 文件中,但我似乎无法弄清楚 - exclude="**" 到底是什么意思?

编辑:我想我想在这里得到什么,虽然似乎 exclude="**" 应该排除 src/main/resources 中的所有内容,但是 - 它没有。当我创建一个测试项目并放入文件夹(例如:META-INF)时,它们实际上确实出现在目标/类中。为什么?那么排除的意义何在?

TIA

【问题讨论】:

    标签: eclipse classpath m2eclipse


    【解决方案1】:

    它的基本意思是“排除一切”。 ** 是一个通配符,可以匹配目录树中任何位置的任何文件或目录。

    它对 Subversion .svn 文件夹很有用,例如,它可以出现在源代码树的任何级别。在这种情况下,您可以排除 **/.svn,这将匹配任何 .svn 文件夹。在这种情况下,**/ 匹配树中的任何目录。

    【讨论】:

    • 然而,当我将文件夹和源文件添加到 src/main/resources 时,它们仍然显示在目标/类中;这似乎没有排队。
    【解决方案2】:

    由于您使用的是 m2eclipse,因此您项目中的 .project 文件包含

    <buildCommand>
        <name>org.maven.ide.eclipse.maven2Builder</name>
        <arguments>
        </arguments>
    </buildCommand>
    

    这是覆盖 Java 构建器,并将 /src/main/resources 中的文件夹复制到 /target/classes 目录中。

    如果您要删除上述构建命令并清理您的项目,/src/main/resources 中的文件应该会消失。如果您添加构建命令,您的文件应该会重新出现。

    我意识到这并不能回答所陈述的关于 exclude="**" 的作用的问题,但这解释了您所看到的行为。

    【讨论】:

      【解决方案3】:

      ** 是一种特殊模式,它匹配基本路径中的每个文件及其所有子目录中的所有文件。在您的示例中,它只是排除了src/main/resources 中的所有文件。

      【讨论】:

      • 那么为什么当我清理项目时 src/main/resources 中的所有内容仍会出现在目标/类中?
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-09-06
      • 1970-01-01
      • 2021-12-25
      相关资源
      最近更新 更多