2011-09-08 162 views
6

我有一個Maven網站項目,我在src \ main \ webapp \文件夾下有一些CSS和Javascript文件。我不斷對這些文件進行更改,並希望能夠快速查看我的更改。如果我運行maven install,由於項目依賴性,它需要時間。有時我想改變的只是CSS文件中的一行代碼,不想重新編譯其他所有內容。我有一個Maven插件,將我的輸出戰爭文件發佈到我的JBoss實例。理想情況下,我想運行一個Maven執行腳本,它將快速將我的Web資源複製到輸出文件夾並重新部署更改的war文件,而無需重新編譯其他任何內容。Maven網絡資源問題

我試圖調用產生資源目標,但似乎並沒有看在src \主\ webapps目錄下,因爲它是我期待的資源是在src \主\資源文件夾下。我在這裏錯過了什麼?

感謝

回答

5

如果要在generate-resources插件期間添加更多要複製的資源,可以更改構建使用的資源文件夾。 project.build.resources屬性控制搜索資源的文件夾。您可以添加:

<project> 
    ... 
    <build> 
    ... 
    <resources> 
     <resource> 
     <directory>src/main/resources</directory> 
     </resource> 
     <resource> 
     <directory>src/main/webApp</directory> 
     <includes> 
      <include>*.css</include> 
      <include>*.js</include> 

然後,您將運行mvn resources來複制文件。

這種方法是,這些文件將始終在任何構建的資源階段被複制。您可以通過使用copy-resources目標而不是資源來解決此問題。在這種情況下,你可以使用以下配置:

<build> 
    <plugins> 
     <plugin> 
     <artifactId>maven-resources-plugin</artifactId> 
     <version>2.5</version> 
     <executions> 
      <execution> 
      <id>copy-web-resources</id> 
      <!-- here the phase you need --> 
      <goals> 
       <goal>copy-resources</goal> 
      </goals> 
      <configuration> 
       <outputDirectory>${project.build.directory}/webApp</outputDirectory> 
       <resources> 
       <resource> 
       <directory>src/main/webApp</directory> 
       <includes> 
        <include>*.css</include> 
        <include>*.js</include> 

然後,您可以運行mvn resources:copy-resources複製文件。

+0

謝謝你。我嘗試了爲複製資源目標提供的配置,但在執行資源時出現此錯誤:copy-resources:「目標org.apache.maven.plugins的參數'resources','outputDirectory':maven-resources -plugin:2.5:複製資源丟失或無效「。任何想法如何解決? – Ayyoudy

+0

我將不得不看你的配置。只是看着它,我看不到有什麼錯誤。 –

+0

沒關係。我認爲它出於某種原因不喜歡* .css格式!我將它修改爲 css/**,並且對此很滿意......奇怪! – Ayyoudy

2

我想你可以通過使用war:war目標實現這一點。這應該會在輸出文件夾中爲您生成一個war文件,而無需重新編譯源代碼。

+0

其實,不幸的是,這並沒有將更改複製到我的資源。我嘗試了兩次,修改了兩個不同的資源,但這些更改沒有傳遞到輸出文件夾或war文件。 在重新複製到war文件中的內容中,沒有辦法有選擇性嗎?戰爭:戰爭目標需要5分鐘才能運行,因爲它有一個大的資源文件夾,它每次都會重新複製,儘管它沒有改變。有時我正在處理一個CSS文件,並希望不斷進行修改,直到我滿意爲止。我認爲這種延遲在這種情況下並不理想。還有什麼想法? – Ayyoudy