Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/maven/6.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和Eclipse中管理多个web应用程序的共享资源?_Eclipse_Maven_Maven Eclipse Plugin - Fatal编程技术网

如何在Maven和Eclipse中管理多个web应用程序的共享资源?

如何在Maven和Eclipse中管理多个web应用程序的共享资源?,eclipse,maven,maven-eclipse-plugin,Eclipse,Maven,Maven Eclipse Plugin,注意:在这个问题的第一个版本中,我没有得到任何回应,所以我修改了它,使之更加通用 上下文 我的项目分为几个maven模块和几个web应用程序。结构如下: my-project + pom.xml +-- commons +-- persistence +-- ... +-- web-app-1 +-- web-app-2 +-- ... 所有web应用程序共享公共资源,如JS、CSS和图像文件 我没有在每个web-app-X中复制这些资源,而是决定创建另一个名为we

注意:在这个问题的第一个版本中,我没有得到任何回应,所以我修改了它,使之更加通用

上下文

我的项目分为几个maven模块和几个web应用程序。结构如下:

my-project
  + pom.xml
  +-- commons
  +-- persistence
  +-- ...
  +-- web-app-1
  +-- web-app-2
  +-- ...
所有web应用程序共享公共资源,如JS、CSS和图像文件

我没有在每个
web-app-X
中复制这些资源,而是决定创建另一个名为
web资源
的项目,这是一个WAR项目。 结构如下所示:

my-project
  + pom.xml
  +-- commons
  +-- persistence
  +-- ...
  +-- web-app-1
  +-- web-app-2
  +-- ...
  +-- web-resources
       +-- pom.xml
       +-- src/main/webapp
            +-- web.xml (which is almost empty, just need to be present for Maven)
            +-- web_resources
                 +-- css
                 +-- images
                 +-- javascript

Maven

在Maven 2中(或Maven 3,因为我刚刚将我的项目迁移到Maven 3.0.2),此配置很容易管理,因为所有
web-app-X
都将
web资源
声明为依赖项:

<groupId>foo.bar</groupId>
<artifactId>web-app-1</artifactId>
...
<dependencies>
    <dependency>
        <groupId>foo.bar</groupId>
        <artifactId>web-resources</artifactId>
        <version>${preclosing-version}</version>
        <type>war</type>
    </dependency>
    ...
当我运行
mvn eclipse:eclipse
配置时,它成功地将此信息添加到我的
.project
文件中:

<projectDescription>
  ...
  <linkedResources>
    <link>
      <name>web_resources</name>
      <type>2</type>
      <location>C:\dev\project\web-resources\src\main\webapp\web_resources</location>
    </link>
  </linkedResources>
<projectDescription>

问题

  • 是否有更好的方法来管理此类配置

技术资料


Java 6、Maven 3.0.2、Maven eclipse plugin 2.8、eclipse 3.3.2(但我可以用较新版本的eclipse进行测试),nom2eclipse plugin。

您可能想看看这篇博文。它介绍了使用maven共享资源的方法:


从Servlet 3.0开始,您可以通过将资源放在src/main/resources/META-INF/resources目录中来共享资源

部署webapp时,Servlet3.0会从上下文路径提供这些资源。例如,在你的情况下

web-resources
-- src
---- main
------ resources
-------- META-INF
---------- resources
------------ css
-------------- global.css
------------ images
-------------- background.png
让我们假设my_项目依赖于web资源,并部署到url

通过该配置,以下URL将解析为正确的资源:

如果资源与实际应用程序之间存在名称冲突,则应用程序将获胜

确保web.xml声明您正在使用Servlet3.0

<web-app xmlns="http://java.sun.com/xml/ns/javaee"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd"
    version="3.0">

web-resources
-- src
---- main
------ resources
-------- META-INF
---------- resources
------------ css
-------------- global.css
------------ images
-------------- background.png
<web-app xmlns="http://java.sun.com/xml/ns/javaee"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd"
    version="3.0">