gpt4 book ai didi

xml - maven-jar-plugin 包括 vs 排除

转载 作者:数据小太阳 更新时间:2023-10-29 01:44:56 25 4
gpt4 key购买 nike

我有一个包含 maven-jar-plugin 部分的现有 pom 文件。它为 test-jar 目标运行,目前排除了几个目录:

<excludes>
<exclude>...</exclude>
<exclude>...</exclude>
<exclude>somedir/**</exclude>
</excludes>

我需要在 somedir 目录中包含一个文件,但在 somedir 目录中保留其余文件。我读到包含优先于排除,所以我添加了如下内容(之前没有包含部分):

<includes>
<include>somedir/somefile.xml</include>
</includes>

这最终会创建一个用于测试的 jar 文件,其中只有几个文件(只是 META-INF 中的内容)。我包含的文件也不在 jar 中。我期望的是一个 jar,它与在我的 include 更改之前创建的 jar 相同,其中包含一个附加文件。

我在这里错过了什么?

最佳答案

首先,如果您没有指定任何 includes ,那么 Maven jar 插件将使用 **/** 作为默认模式(请参阅 o.a.m.p.j.AbstractJarMojo ),即它将包含所有内容。如果你覆盖这个默认模式,插件显然只会包含你告诉他包含的内容。

其次,目录扫描在最后由 o.c.p.u.DirectoryScanner 完成,这是该类的 javadoc 所说的:

 * The idea is simple. A given directory is recursively scanned for all files * and directories. Each file/directory is matched against a set of selectors, * including special support for matching against filenames with include and * and exclude patterns. Only files/directories which match at least one * pattern of the include pattern list or other file selector, and don't match * any pattern of the exclude pattern list or fail to match against a required * selector will be placed in the list of files/directories found.

因此,对于您当前的 includesexcludes 模式集,只有 ONE 文件会匹配包含模式,但也会匹配排除模式,因此不会被选中,您会得到一个几乎为空的存档(仅使用默认 list ,请参阅 o.a.m.p.j.AbstractJarMojo#createArchive() )。

我不能在这里给你确切的解决方案,但你显然需要重新考虑你包含/排除文件的方式(例如添加更多 includes 模式,删除 <exclude>somedir/**</exclude> ,或仅使用 includes,或仅使用 excludes)。

关于xml - maven-jar-plugin 包括 vs 排除,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2449601/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com