3

我有一个带有一些特殊资源文件夹的 Maven Eclipse 项目:www-build。我将它添加到 pom.xml 以让 maven 将其用于资源:

<build>
    <resources>
        <resource>
            <directory>www-build</directory>
        </resource>
        <resource>
            <directory>src/main/resources</directory>
        </resource>
    </resources>
...
</build>

我注意到 Maven 不会从资源文件夹中提供这些文件,而是总是先复制它们的目标目录。由于后者有时似乎神秘地不适用于某些人,我想知道:

是否可以让 Maven/Eclipse 直接从 www-build 提供资源,而不复制到目标?为什么要复制到目标?

4

2 回答 2

1

你还没有说你是如何运行 web 应用程序的。

如果您通过内置的 Eclipse 功能运行 webapp,则有一个用于 eclipse 的替代插件:webby应该做您所追求的(我不使用 eclipse,所以我无法确认)

如果您通过 maven 插件运行 servlet 容器,例如 jetty-maven-plugin 或 tomcat-maven-plugin,那么这可能仅取决于您使用的插件目标....

我一直在研究一个替代的、更像网络的 maven 插件:jszip.org它仍处于 alpha 阶段,在过去的几个月里我没有空闲时间推进它,但我应该得到一些很快就会再次循环。

最后,如果这些是类路径资源,从技术上讲,它们中的更改应该涉及重新启动整个 Web 应用程序,因为容器管理器无法评估更改类路径上的文件的范围/影响,因此此类更改应该触发上下文重启...如果您使用原始类路径进行上下文拆卸,更新类路径然后设置替换上下文,那么这是最安全的...如果将类路径资源复制到“工作”目录中,这将更容易做到该应用程序的启动位置

于 2013-08-30T06:50:50.383 回答
0

资源是您程序的一部分,因此与您的程序打包在一起。当 Maven 完成打包时,它会将属于包的所有内容复制到目标目录。

如果您不需要此行为,则根据定义,您的文件夹的内容可能不是资源。您可以将其设置为依赖项吗?

于 2013-08-30T06:52:22.680 回答