用于静态文件的 Maven 模块
Maven module for static files
我有一个带有 spring 和 maven 的网络应用程序。该应用程序分为 Maven 模块。我有一个生成 war 的 "application-web" 模块。另一个生成耳朵的 "application-ear" 模块。另一个 "application-static" 带有 css、js 和生成 zip 文件的图像。
这将是我的申请大纲:
- 申请
- 应用程序网络(java 代码)
- 应用耳
- 静态应用程序(css、js 和图像)
- 应用程序资源(语言属性)
我想部署 "static" 模块的 eclipse 使用文件,而不是使用 "application/src/main/webapp" 目录中的文件。我怎样才能做到这一点?有可能吗?
您可以使用 maven 依赖插件解压包含在 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
这项工作:
<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>
但是我还有一个问题,这个解决方案只在我执行清理包时复制静态文件。如果我 运行 使用 eclipse 的 application-web 并且我在 application-static 中的 js 文件中进行了更改,则这些更改在我执行 clean package 之前不会生效。有什么解决办法吗?
不要浪费时间解包资源,一切都开箱即用:
- 资源包:总是从类路径加载,无论它是展开的 (
WEB-INF/classes
) 还是压缩的 (WEB-INF/lib
)
- 提供静态资源:将它们捆绑在一个 JAR 中并使用 Tomcat (Servlet 3.0) 功能从
META-INF/resources
提供服务,请参阅 here or use Spring's built in mvc:resources
元素。
只需在您的 WAR POM 中添加依赖项片段即可完成。
我有一个带有 spring 和 maven 的网络应用程序。该应用程序分为 Maven 模块。我有一个生成 war 的 "application-web" 模块。另一个生成耳朵的 "application-ear" 模块。另一个 "application-static" 带有 css、js 和生成 zip 文件的图像。
这将是我的申请大纲:
- 申请
- 应用程序网络(java 代码)
- 应用耳
- 静态应用程序(css、js 和图像)
- 应用程序资源(语言属性)
我想部署 "static" 模块的 eclipse 使用文件,而不是使用 "application/src/main/webapp" 目录中的文件。我怎样才能做到这一点?有可能吗?
您可以使用 maven 依赖插件解压包含在 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
这项工作:
<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>
但是我还有一个问题,这个解决方案只在我执行清理包时复制静态文件。如果我 运行 使用 eclipse 的 application-web 并且我在 application-static 中的 js 文件中进行了更改,则这些更改在我执行 clean package 之前不会生效。有什么解决办法吗?
不要浪费时间解包资源,一切都开箱即用:
- 资源包:总是从类路径加载,无论它是展开的 (
WEB-INF/classes
) 还是压缩的 (WEB-INF/lib
) - 提供静态资源:将它们捆绑在一个 JAR 中并使用 Tomcat (Servlet 3.0) 功能从
META-INF/resources
提供服务,请参阅 here or use Spring's built inmvc:resources
元素。
只需在您的 WAR POM 中添加依赖项片段即可完成。