2011-12-13 34 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