在战争中打包Javascript文件?

在战争中打包Javascript文件?,java,javascript,maven-2,Java,Javascript,Maven 2,我正在开发一个基于Servlet的Java项目,该项目将使用Maven打包为war。 是否有一种方法可以将JavaScript(JS)文件包含在这个项目中(当项目加载到Tomcat服务器上时,它们应该在某个url上可用) 我四处查看了一下,但没有找到任何有效的解决方案。您可以使用,并对其进行如下配置: <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId

我正在开发一个基于Servlet的Java项目,该项目将使用Maven打包为war。 是否有一种方法可以将JavaScript(JS)文件包含在这个项目中(当项目加载到Tomcat服务器上时,它们应该在某个url上可用)

我四处查看了一下,但没有找到任何有效的解决方案。

您可以使用,并对其进行如下配置:

<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>
<script type="text/javascript" src="javascript/jquery-1.4.2.min.js"></script>

org.apache.maven.plugins


edit:您可能不想将
js
包含在
classes
文件夹中。

也许更好的解决方案是坚持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插件。

将它们放在src/main/webapp下的目录中。也就是说,假设您使用
maven原型webapp
原型生成它

我当前的应用程序将它们放在src/main/webapp/javascript下,并在JSP中访问它们,如下所示:

<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>
<script type="text/javascript" src="javascript/jquery-1.4.2.min.js"></script>


(对于src/main/webapp中的jsp文件,也就是说)

您是对的,我的示例配置以某种方式混合了外部和隐式资源添加。默认情况下,
src/main/resources
下的所有内容都添加到
WEB-INF/classes
文件夹中。因此,它将两次添加到
war
。顺便说一句,maven的惯例是
src/main/webapp
而不是webapps。这是一个类似的问题。