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

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

但这会导致 仅有的 extraDir 位于资源中,不包括超级 pom 的资源。有没有办法扩展超级pom的资源?

有帮助吗?

解决方案

你所描述的行为是正常的。

请记住,你的超级POM从Maven的默认继承POM 和几乎任何插件,你在你的POM定义有效覆盖默认POM的设置。举个例子,要启用默认的资源过滤,你有你的POM指定路径。你这样做:

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

不这样:

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

在默认目录不为你泡了,即使你没有指定它。有可能是一个特殊的MOJO来为你做它,但我找不到一个。

其他提示

请参阅建立辅助性Maven的插件的使用页面。

是的,家复盖父球的资源时重新确定新资源部分。

然而,一个简单的方式来增加资源是

  1. 除资源部分从你的POM
  2. 显示出有效POM
  3. 复制的资源从有效POM进你的项目
  4. 替换绝对路径相对的
  5. 添加额外资源

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

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

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

Maven Resources Plugin提供了一个名为 resources:copy-resources 这正是为你做的:使用过滤器将文件从一个地方复制到另一个地方,或者如插件文档所述:

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

与其他解决方案中建议的构建帮助程序相比,明显的优势是,虽然构建帮助程序只能在 generate-sources 阶段,资源插件在任何阶段都可以工作。(尽管在打包阶段之前执行它是明智的)

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

其作用是复制未列出的资源目录的内容”src/non-packaged-resources“ 进入 ”${basedir}/target/extra-resources”。但由于 jar 插件(创建 jar 存档)基本上创建了目录的 zip 存档“${project.build.outputDirectory}”,你可能想把它放在那里。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top