向 Maven pom 添加其他资源

Posted

技术标签:

【中文标题】向 Maven pom 添加其他资源【英文标题】:Adding additional resources to a Maven pom 【发布时间】:2010-11-09 05:51:04 【问题描述】:

我定义了一个超级 pom,在其中我为资源指定了一个“资源”目录。在我的一个项目中,我的 pom 扩展了那个超级 pom,我想添加一个额外的资源。我试过了:

    <resources>
        <resource>
            <targetPath>/</targetPath>
            <directory>additionalDir</directory>                
        </resource>
    </resources>

但这会导致 additionalDir 在资源中,并且不包括超级 pom 的资源。有没有办法扩展超级pom的资源?

【问题讨论】:

【参考方案1】:

您描述的行为是预期的。

请记住,您的超级 POM 继承自 Maven 的 default POM,并且您在 pom 中定义的几乎所有插件都会有效地覆盖默认 POM 中的设置。例如,要对默认资源启用过滤,您必须在 POM 中指定路径。你这样做:

<resources>
  <resource>
    <directory>src/main/resources</directory>
    <filtering>true</filtering>
  </resource>
</resources>

不是这个:

<resources>
  <resource>
    <filtering>true</filtering>
  </resource>
</resources>

默认目录不会为您冒泡,即使您已在此处指定它。可能有一种特殊的 MOJO 可以为你做,但我找不到。

【讨论】:

我想知道,这如何解决操作的问题?你能说得清楚一点吗?应该在哪里做任何改变【参考方案2】:

查看 build-helper-maven-plugin 的 usage 页面。

【讨论】:

这确实有效,但必须指定 &lt;targetPath&gt;$project.outputDirectory&lt;/targetPath&gt;&lt;filtering&gt;true&lt;/filtering&gt; 有点讨厌,这甚至没有记录(但有效)。【参考方案3】:

我知道这个问题现在已经很老了,但也许有人会觉得这很有用:

您可以使用 maven 资源插件轻松做到这一点。

基本上,默认情况下(调用 resources:resources 目标)是使用声明的过滤器将 build/resources 部分中列出的所有目录的内容移动到 $project.build.outputDirectory 如果您现在想在不影响这些部分的情况下添加一些额外的资源,您可以自己将资源移到那里。不,这并不意味着将其拖放到那里。

Maven Resources Plugin提供了一个名为 resources:copy-resources 的目标,它完全可以为您做到这一点:使用过滤器将文件从一个地方复制到另一个地方,或者如插件文档所述:

您可以使用 mojo copy-resources 复制不在默认 maven 布局中或未在 build/resources 元素中声明的资源并将其附加到阶段

与其他解决方案中建议的 build-helper 相比,明显的优势在于,虽然 build-helper 只能在 generate-sources 阶段采取行动,但资源插件在任何阶段都可以工作。 (虽然在打包阶段之前执行它是明智的)

作为插件项目页面的一部分,here 提供了有关如何使用它的完整示例。

它的作用是处理未列出的资源目录“src/non-packaged-resources”的内容 进入“$basedir/target/extra-resources”。但由于 jar 插件(创建 jar 存档)基本上会创建目录“$project.build.outputDirectory”的 zip 存档,因此您可能希望将其放在那里。

【讨论】:

【参考方案4】:

是的,maven 在重新定义新资源部分时会覆盖父 POM 的资源。

但是,添加资源的一种简单方法是

    从您的 POM 中删除资源部分 显示有效的 POM 将有效 POM 中的资源复制到项目中 用相对路径替换绝对路径 添加您的其他资源

【讨论】:

以上是关于向 Maven pom 添加其他资源的主要内容,如果未能解决你的问题,请参考以下文章

如何在 Maven 依赖项 pom.xml 文件中添加其他参数

springboot maven mybatis generate插件的使用

springboot maven mybatis generate插件的使用

IDEA中的Maven项目配置了resources标签还是不能成功导出资源?

Maven 在 POM 中增加项目版本,但过滤的资源获取旧版本

maven中的资源过滤问题