在战争中打包Javascript文件?

问题描述:

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

我环顾四周,但还没有找到任何工作解决方案。

+0

这是一个类似的问题。 http://*.com/questions/8397357/copy-a-file-during-maven-build-phase – 2013-05-01 19:22: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插件。

+0

你是对的,我的example-config以某种方式混合外部和隐式资源添加。 'src/main/resources'下的所有内容默认添加到'WEB-INF/classes'文件夹中。所以它会在“战争”中增加两次。 btw maven约定是'src/main/webapp'不是webapps。 – cuh 2010-10-08 14:25:03

+0

@cuh更正。 – romaintaz 2010-10-08 14:33:33

可以使用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

编辑:你可能不希望包括jsclasses文件夹。

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

我目前的应用程序有他们在src /主/ web应用/ JavaScript和访问他们在这样的JSP:

<script type="text/javascript" src="javascript/jquery-1.4.2.min.js"></script> 

(在SRC /主/ web应用jsp文件即是)