将Javascript文件打包在war文件中?

5

我正在开发一个基于Servlet的Java项目,打算使用Maven将其打包成war文件。 有没有办法在这个项目中包含JavaScript(JS)文件(它们应该可以在Tomcat服务器上加载项目时的某个url上访问)。

我已经搜索过了,但是没有找到任何可行的解决方案。


这是一个类似的问题。https://dev59.com/al3Va4cB1Zd3GeqPFv1G - Mike Pone
3个回答

12
也许更好的解决方案是坚持使用Maven约定,该约定指定Web应用程序的根目录为src/main/webapp。因此,如果您将所有Javascript文件放在src/main/webapp/javascript(或src/main/webapp/js)中,它们将被集成到最终的war包中。在Maven WAR插件中,它们提供了一些关于目录内容的描述(例如,请参见这里)。
 |-- pom.xml
 `-- src
     `-- main
         |-- java
         |   `-- com
         |       `-- example
         |           `-- projects
         |               `-- SampleAction.java
         |-- resources
         |   `-- images
         |       `-- sampleimage.jpg
         `-- webapp
             |-- WEB-INF
             |   `-- web.xml
             |-- index.jsp
             `-- jsp
                 `-- websource.jsp

正如你所看到的,你可以把资源放在 webapp/xxx 目录下,例如在这里放置 jsp 文件。

正如 cuh 所述,如果你的目录结构不同,你也可以配置 Maven WAR 插件。


你说得对,我的example-config在某种程度上混淆了外部和隐式资源添加。src/main/resources下的所有内容默认都会被添加到WEB-INF/classes文件夹中。因此,它将被添加两次到war包中。顺便说一句,Maven的约定是使用src/main/webapp而不是webapps。 - cuh

3
你可以使用maven-war-plugin,并进行如下配置:
<plugin>
      <groupId>org.apache.maven.plugins</groupId>
       <artifactId>maven-war-plugin</artifactId>
       <version>2.0.2</version>
       <configuration>
           <warSourceDirectory>${basedir}/src/main/webapp</warSourceDirectory>
           <webResources>
                <resource>
                    <directory>your/path/to/js</directory>
                    <targetPath>js</targetPath>
                </resource>
           </webResources>
       </configuration>
</plugin>

点击这里查看。

: 你可能不希望将js文件包含在classes文件夹中。


1
将它们放在src/main/webapp目录下的子目录中。假设您是使用maven-archetype-webapp原型生成的。
我的当前应用程序将它们放在src/main/webapp/javascript下,并在JSP中像这样访问它们:
<script type="text/javascript" src="javascript/jquery-1.4.2.min.js"></script>

(针对src/main/webapp中的jsp文件)


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接