2011-12-13 49 views
0

我对Maven2.2.1和JavaScript有一个奇怪的问题。当我试图根据我正在运行的不同配置文件过滤一个JavaScript文件时,出现问题。我的Maven的代码是接近这个:使用来自Jetty的Maven隐藏文件过滤JavaScript文件

 ... 
     <resource>  
      <filtering>true</filtering> 
      <directory>${basedir}/src/main/resources</directory> 
      <includes> 
       <include>settings-file.js</include> 
      </includes> 
      <targetPath> 
       ${build.directory}/${build.finalName}/www/wc/js 
      </targetPath> 
     </resource> 
     ... 
     <profiles> 
     <profile> 
     <id>final</id> 
     <properties> 
      ... 
      <web.setting.baseUrl>http://www.base.com</web.setting.baseUrl> 
      ... 
     </profile>     
     </profiles> 
     ... 

我期待文件“设置 - file.js”被过滤和所有出现,例如,$ {} web.setting.baseUrl被改变,当我打电话

mvn clean install -Pfinal 

但是当文件“设置 - file.js”被放在< TARGETDIR>不happend,所以我把它移到的src/main /资源期待它覆盖现有文件 - 但它仍不会发生。我解决它从原始位置删除文件,并将其放置在资源文件夹和编辑maven pom.xml文件(如清单所示)。

现在我有新的尴尬问题。当我与

mvn jetty:run 

开始我的web应用程序,并导航到使用“设置 - file.js”它刹车,因为它没有看到这个文件的页面。它现在被放置在应该被正确过滤的地方,但由于某种原因,码头不可见。其他* .js文件在那里。如果我在浏览器中输入网址,我可以看到它们,但只有“settings-file.js”不可见。

我该如何解决这个问题?

+0

这听起来像是你在处理两个不同的问题。首先是你不确定如何让Maven过滤以你想要的方式工作。第二个是jetty没有按照您期望的方式提供JavaScript文件。不确定过滤。第二个问题可能与权限有关。 – morgancodes

+0

我只是觉得它可以和mvn码头一起工作:run-war和mvn码头:run-explode但不是mvn码头:运行时就好像最后一个码头只将原始码放到码头容器中一样。现在的问题是如何使码头:运行目标使用过滤资源? – Sasa

回答

1

在maven网络应用程序中,javascript文件通常位于src/main/webapp之下,要过滤这些,您必须配置war插件的webResources配置。默认目标是war文件的根目录。

<plugin> 
    <groupId>org.apache.maven.plugins</groupId> 
    <artifactId>maven-war-plugin</artifactId> 
    <version>2.1</version> 
    <configuration> 
     <webResources> 
      <resource> 
       <filtering>true</filtering> 
       <directory>src/main/webapp</directory> 
       <includes> 
        <include>settings-file.js</include> 
       </includes> 
      </resource> 
     </webResources>      
    </configuration> 
</plugin> 
+0

不,这不会使mvn码头:正常运行。但是,该文件现在对上下文可见,但未被过滤。 – Sasa

+0

嘿它帮助,但不完全。看到我的下一篇文章的解释。 – Sasa