Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/haskell/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Maven 2 向maven pom添加额外资源_Maven 2_Resources_Pom.xml - Fatal编程技术网

Maven 2 向maven pom添加额外资源

Maven 2 向maven pom添加额外资源,maven-2,resources,pom.xml,Maven 2,Resources,Pom.xml,我定义了一个超级pom,其中我为资源指定了一个“resources”目录。在我的一个项目中,我的pom扩展了超级pom,我想添加一个额外的资源。我试过: <resources> <resource> <targetPath>/</targetPath> <directory>additionalDir</directory>

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

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

/
附加目录

但这只会导致资源中存在额外的DIR,而不包括超级pom的资源。有没有办法扩展super pom的资源?

您所描述的行为是预期的

请记住,您的超级POM是从Maven继承的,您在POM中定义的几乎所有插件都会有效地覆盖默认POM中的设置。例如,要在默认资源上启用筛选,必须在POM中指定路径。您可以这样做:

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

src/main/resources
真的
不是这个:

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

真的

默认目录不会为您弹出,即使您已经在那里指定了它。可能有一种特殊的方法可以帮你,但我找不到。

请参阅构建助手maven插件页面。

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

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

  • 从POM中删除参考资料部分
  • 显示有效的POM
  • 将有效POM中的资源复制到项目中
  • 将绝对路径替换为相对路径
  • 添加您的额外资源

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

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

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

    Maven Resources插件
    提供了一个名为
    Resources:copy Resources
    的目标,该目标正好为您提供了这一功能:使用过滤器将文件从一个地方过滤到另一个地方,或者如插件文档所述:

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

    与其他解决方案中建议的构建助手相比,构建助手的明显优势在于,虽然构建助手只能在
    生成源代码
    阶段执行操作,但资源插件可以在任何阶段工作。(尽管最好在包装阶段之前执行)

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

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

    这确实有效,必须指定
    ${project.outputDirectory}
    true
    这两个甚至没有文档(但有效)的目录,这有点麻烦.我想知道,这是如何解决op的问题的?请你说清楚一点好吗?应该在哪里做任何更改