在战争中打包Javascript文件?

时间:2010-10-08 13:07:10

标签: java javascript maven-2

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

我环顾四周,但没有找到任何有效的解决方案。

3 个答案:

答案 0 :(得分:12)

也许更好的解决方案是坚持Maven约定,它指定Web应用程序的根目录是src/main/webapp

因此,如果您将所有Javascript文件放在src/main/webapp/javascript(或src/main/webapp/js)中,它们将被整合到您的最终战争包中。

在Maven WAR插件中,他们提供了有关目录内容的一些描述(例如,参见here)。例如:

 |-- 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插件。

答案 1 :(得分: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>

请参阅here

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

答案 2 :(得分: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文件)