Java 用于静态文件的Maven模块
我有一个带有spring和maven的web应用程序。应用程序分为maven模块。我有一个生成war的“应用程序web”模块。另一个生成ear的“应用程序ear”模块。还有另一个“应用程序静态”,包含css、js和生成zip文件的图像 这将是我的申请大纲: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”目录
- 应用
- 应用程序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模块中,@oscarlocation
正在使用Spring中应用的默认资源路径。也就是说,由于您在一个webapp中,默认位置是通过webapp解析的,要从jar中获取资源,请使用classpath:/assets/
。不适用于我,应用程序静态模块将生成一个zip而不是jar。在eclipse中部署未找到的静态文件。在应用程序web war中找不到zip或静态文件。@oscar使用标准JAR即可工作。在这种环境下,使用ZIP文件没有任何意义。如果使用jar文件,文件(application static.jar)将复制到WEB-INF/lib目录,但找不到静态文件。谢谢你的耐心,我是一个马文和包装模块的noob。