Java 用于静态文件的Maven模块

Java 用于静态文件的Maven模块,java,eclipse,spring,maven,maven-assembly-plugin,Java,Eclipse,Spring,Maven,Maven Assembly Plugin,我有一个带有spring和maven的web应用程序。应用程序分为maven模块。我有一个生成war的“应用程序web”模块。另一个生成ear的“应用程序ear”模块。还有另一个“应用程序静态”,包含css、js和生成zip文件的图像 这将是我的申请大纲: 应用 应用程序web(java代码) 应用耳 应用程序静态(css、js和图像) 应用程序资源(语言属性) 我想部署eclipse使用“static”模块的文件,而不是使用“application/src/main/webapp”目录

我有一个带有spring和maven的web应用程序。应用程序分为maven模块。我有一个生成war的“应用程序web”模块。另一个生成ear的“应用程序ear”模块。还有另一个“应用程序静态”,包含css、js和生成zip文件的图像

这将是我的申请大纲:

  • 应用
    • 应用程序web(java代码)
    • 应用耳
    • 应用程序静态(css、js和图像)
    • 应用程序资源(语言属性)

我想部署eclipse使用“static”模块的文件,而不是使用“application/src/main/webapp”目录中的文件。我该怎么做?有可能吗?

您可以使用maven dependency插件,通过以下方式解压缩zip文件中包含的静态资源:

在您的应用程序-web.pom中

<plugin>
    <groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-dependency-plugin</artifactId>
    <executions>
        <execution>
            <id>unpack-resources</id>
            <goals>
                <goal>unpack-dependencies</goal>
            </goals>
            <phase>generate-sources</phase>
            <configuration>
                <outputDirectory>resources</outputDirectory>
                <includeArtifactIds>application-static</includeArtifactIds>
                <includeGroupIds>your group id</includeGroupIds>
                <includes>**/*.js,**/*.css</includes>
            </configuration>
        </execution>
    </executions>
</plugin

org.apache.maven.plugins
maven依赖插件
解包资源
解包依赖项
生成源
资源
应用程序静态
您的组id
**/*.js,***.css
这项工作:

<build>
    <plugins>
        <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-dependency-plugin</artifactId>
            <version>2.10</version>
            <executions>
                <execution>
                    <id>unpack-dependencies</id>
                    <phase>package</phase>
                    <goals>
                        <goal>unpack-dependencies</goal>
                    </goals>
                    <configuration>
                        <excludeTypes>pom</excludeTypes>
                        <includeArtifactIds>application-static</includeArtifactIds>
                        <includeGroupIds>com.foo.foo.application</includeGroupIds>
                        <outputDirectory>src/main/webapp</outputDirectory>
                    </configuration>
                </execution>
            </executions>
        </plugin>
    </plugins>
    <finalName>${project.artifactId}-${project.version}</finalName>
</build>

org.apache.maven.plugins
maven依赖插件
2.10
解包依赖项
包裹
解包依赖项
聚甲醛
应用程序静态
com.foo.foo.application
src/main/webapp
${project.artifactId}-${project.version}

但我还有另一个问题,这个解决方案在执行clean package时只复制静态文件。如果我使用eclipse运行web应用程序,并在应用程序静态中对js文件进行更改,则在执行clean package之前,更改不会生效。有什么解决方案吗?

不要把时间浪费在解包资源上,一切都是开箱即用的:

  • 资源捆绑包:总是从类路径加载,而不是将其分解(
    WEB-INF/classes
    )或压缩(
    WEB-INF/lib
  • 服务静态资源:将它们捆绑在一个JAR中,并使用Tomcat(Servlet 3.0)特性从
    META-INF/resources
    提供服务,查看或使用Spring的内置元素

  • 只需在WAR POM中添加依赖项片段,您的工作就完成了。

    为什么要将css/js和图像移动到应用程序静态中,而不是直接移动到应用程序web模块中?这些是项目的规范。一个用于静态文件的模块,一个用于国际化消息,另一个用于配置文件设置。这可以工作,但我有另一个问题。我已经完成了。我有zip文件。但是我不知道如何将zip文件放在应用程序web中使用它。这是我第一次做这样的事。我明白你的意思。您可以使用上面提到的maven依赖插件,谢谢,看起来是一个很好的解决方案。明天我就试试看,讨论一下这个问题results@oscar不是,请看我的答案。我在应用程序web pom中具有应用程序静态依赖性,并删除了反构建部分。我删除src/main/webapp目录的静态文件。如何使用mvc:resources获取静态文件?因为文件在应用程序web模块中,@oscar
    location
    正在使用Spring中应用的默认资源路径。也就是说,由于您在一个webapp中,默认位置是通过webapp解析的,要从jar中获取资源,请使用
    classpath:/assets/
    。不适用于我,应用程序静态模块将生成一个zip而不是jar。在eclipse中部署未找到的静态文件。在应用程序web war中找不到zip或静态文件。@oscar使用标准JAR即可工作。在这种环境下,使用ZIP文件没有任何意义。如果使用jar文件,文件(application static.jar)将复制到WEB-INF/lib目录,但找不到静态文件。谢谢你的耐心,我是一个马文和包装模块的noob。