【问题标题】:Why are image files not copied by the maven-resources-plugin?为什么 maven-resources-plugin 不复制图像文件?
【发布时间】:2013-04-10 21:04:16
【问题描述】:

我正在使用 YUICompressor maven 插件缩小和聚合我的 css 文件,该插件在我的资源目录的基础上创建一个 css 文件。这些原始 css 文件嵌套在一些文件夹中,这些文件夹在同一级别也有一个“图像”文件夹。

我想将这些嵌套图像文件夹中的所有图像复制到我的资源目录底部的一个“图像”文件夹中,以便聚合的 css 仍然能够引用这些图像。

这是我的插件配置:

<plugin>
    <artifactId>maven-resources-plugin</artifactId>
    <version>2.6</version>
    <executions>
        <execution>
            <id>copy-images-for-css</id>
            <!-- here the phase you need -->
            <phase>process-resources</phase>
            <goals>
                <goal>copy-resources</goal>
            </goals>
            <configuration>
                <outputDirectory>target/${project.artifactId}-${project.version}/plugin/resources/${plugin.client.version}/images</outputDirectory>
                <resources>
                    <resource>
                        <directory>target/${project.artifactId}-${project.version}/plugin/resources/${plugin.client.version}</directory>
                        <includes>
                            <include>**/images/*.*</include>
                        </includes>
                    </resource>
                </resources>
            </configuration>
        </execution>
    </executions>
</plugin>

为了测试这一点,我在嵌套图像文件中放置了一个 .js 文件,旁边是我希望复制的 .gif 和 .jpg 文件。但是,只有 .js 文件被移动到正确的位置;图像文件没有任何反应。

什么给了?

更新 1:

更直观的目录结构描述:

resources
|--1.1.0
   |--all.min.css
   |--images          //a newly created folder
      |--sample1.gif   //the copied file
      |--sample2.gif   //the copied file
   |--category
      |--category.css
      |--images
         |--sample1.gif
   |--otherCategory
      |--otherCategory.css
      |--images
         |--sample2.gif

更新 2: 我刚刚尝试使用copy-maven-plugin 执行复制并得到相同的结果,js 文件被复制而不是图像文件。不确定这些插件是否共享功能,但如果不是,它让我认为存在与插件无关的事情。我可以使用 windows 命令提示符成功复制文件。

【问题讨论】:

  • 你能提供一个简单的文件夹层次结构吗?
  • 你是否在 标签的 标签中过滤资源?
  • @maks 不,这是我的 pom 文件中唯一出现的资源标签。

标签: maven maven-resources-plugin


【解决方案1】:

尝试将&lt;include&gt;**/images/*.*&lt;/include&gt; 替换为 &lt;include&gt;**/images/*&lt;/include&gt;。但是很奇怪为什么它不适用于您的变体。 同样对于您的情况,最好使用assembly 插件

【讨论】:

  • 上面的建议也不起作用,它也只是复制js文件。至于组装插件,除了从我的pom构建的war文件之外,这不会创建第二个“组装”吗?
  • 不,您必须在特殊文件中声明您要创建的程序集的内容。阅读有关 maven 程序集插件的文档,war、zip、jar 程序集有一个特殊选项
【解决方案2】:

我不确定将资源复制到目标目录的时间,但似乎图像根本没有及时复制。我意识到没有真正的理由需要从目标目录而不是我的源目录进行复制。我更新了目录,如下图,图片复制成功。

之前:

<directory>target/${project.artifactId}-${project.version}/plugin/resources/${plugin.client.version}</directory>

之后:

<directory>src/main/webapp/plugin/resources/${plugin.client.version}</directory>

【讨论】:

    猜你喜欢
    • 2014-10-14
    • 1970-01-01
    • 2014-04-19
    • 1970-01-01
    • 2012-08-07
    • 1970-01-01
    • 1970-01-01
    • 2013-12-27
    • 1970-01-01
    相关资源
    最近更新 更多