当前位置: 首页 > 知识库问答 >
问题:

在maven模块之间共享静态资源

傅玮
2023-03-14

我有一个Maven项目,其中有一个parent-pom项目和3个maven-module项目。其中2个模块是编译成WAR文件的Java-EE web应用程序。其中1个模块包含公共JAVA代码,这些代码在其他2个项目之间共享。共享JAVA代码很容易。

我的问题是如何共享常见的静态资源,如JavaScript、CSS和图像文件,而不在每个web模块中重复它们?我还希望这样做:我可以继续从Eclipse运行web应用程序,并对Eclipse运行的服务器自动可用的静态文件进行更改。

共有1个答案

申屠昌胤
2023-03-14

把@Eric的问题一分为二,我们有:

1)如何共享常见的静态资源,如JavaScript、CSS和图像文件,而不在每个web模块中重复它们?

根据Servlet3.0规范,您可以在外部共享资源,将它们放在源文件夹src/main/resources中。要使其与动态文件(如jsp)一起工作,您应该将文件放在META-INF/Resources文件夹中。那么您的共享项目(jar)结构将如下所示:

mymodule
| src
| | main
|   | java
|     | [java code]
|   | resources
|     | META-INF
|       | resources
|         | [your static and dynamic files]

2)我还希望这样做:我可以继续从Eclipse运行web应用程序,并对Eclipse运行的服务器自动可用的静态文件进行更改。

Eclipse的服务器插件使用关于项目的“部署程序集”配置的信息来跟踪文件并自动发布更改。在共享项目中,您可以通过两种方式修改部署程序集:您可以a)在项目->属性->部署程序集->添加->文件夹中右键单击,然后选择包含要部署和监视的文件的文件夹,或者b)编辑配置文件'.settings/org.eclipse.wst.common.component',添加如下内容

<wb-module deploy-name="mymodule">
    <wb-resource deploy-path="/" source-path="/src/main/resources"/>
</wb-module>

如果选择第二种方法,请小心,这样就不会中断部署任务的执行。

附加信息:如果您使用Maven的resources插件来过滤资源,您可能希望在部署程序集中添加'target'文件夹,而不是'src'文件夹,因为后者将包含未过滤的资源,并且未设置属性(格式为${my.property})。

 类似资料:
  • 我正在处理一个包含两个模块的maven项目:“impl”,它生成一个带有资源的jar;“server”,它生成一个服务器实现的war。 当前,当我尝试创建构建时,impl jar文件包含在服务器的war文件的WEB-INF/lib目录中,所以在服务器war文件生成后,将对其进行解压缩,并在此基础上,所有测试都在运行,并且一切正常。 作为一个要求,我必须将jar和war分开,这样war文件将不包含任

  • 问题内容: 假设我有一个要注入到config中的模块: 有两个子模块: 这是第一个: 第二个是相同的,以简化示例: 您会注意到,您可以将它们作为提供者来访问以配置选项: 如果我们在控制器中,则可以覆盖每个范围,例如: 但是,如果他们总是共享相同的财产怎么办?如何在提供商之间共享某些东西? 我可以同时为和注入和配置共享属性吗? 如何同时访问和作为单个模块的扩展? 问题答案: 将模块插入两个共享这些属

  • 问题内容: 我有一个多模块的Maven项目。为了这个示例,请考虑两个模块: 模块将模块作为依赖项。 模块声明了一堆核心类。有使用它们的测试。这些测试需要创建一些冗长的对象,因此我有一个带有一些实用程序方法的类来创建这些对象。实用程序类()在层次结构中。 我在模块中也进行了一些测试,这些测试需要创建一些冗长的对象。我想在我的树中的测试中使用我的类(在中定义)。不幸的是,即使是的依赖项,也无法看到存在

  • 我有一个多模块Maven项目。在本例中,考虑两个模块: 模块具有模块作为依赖项。 为了解决这个问题,我想我可以创建另一个模块(),并将移到下。那么我将包含作为的测试范围依赖项。不幸的是,这引入了循环依赖关系:使用,但还需要。 我想出的唯一解决方案是将放在下,放在包下,希望真正的应用程序代码不会调用它。 如何在模块之间共享我的类,而不将其放在下?

  • 我正在尝试弄清楚如何在单个IntelliJ项目中的两个模块之间共享包,但我似乎找不到正确的方法。我知道它可以在Eclipse中完成,但我不太精通它。简而言之,我正在尝试重现由AppEngine连接的Android项目创建的相同类型的项目环境。 这是我能说的最好的“问题” 项目A。 模块1;AppEngine GWT其他任何内容 模块2;Android 每个模块在项目的主目录中都有自己的源目录: /

  • 问题内容: 我的高级Java课堂上有关线程的老师说了一些我不确定的东西。以下代码不一定会更新ready变量。根据他的说法,这两个线程不一定共享静态变量,特别是在每个线程(主线程与)在其自己的处理器上运行并且因此不共享相同的寄存器/缓存/等和一个CPU的情况下。不会更新其他。 从本质上讲,他说有可能在主线程中进行更新,而不是在中进行更新,因此将无限循环。 他还声称该程序可以打印或打印。我了解如何打印