2012-05-04 17 views
2

我正在使用一個簡單的項目,將webapp目錄放在標準位置(src/main/webapp)中。出於某種原因,它看起來像maven-shade-plugin不包括在最終生成的jar中 - 默認情況下它只包含工件src/main/resources。 我曾嘗試使用下面的配置,沒有運氣:配置maven-shade-plugin以包含src/main/webapp

<configuration> 
<artifactSet> 
    <includes> 
    <include>*</include> 
    <include>*:*</include> 
    </includes> 
</artifactSet> 
</configuration> 

如何做到這一點的任何建議,而不必爲src /主/ web應用程序移動到的src /主/資源/ webapp的?

謝謝。

Eugen。

+1

據我所知這個插件是用來合併罐子在一起,而不是戰爭包。 – Farid

回答

6

您是否嘗試過使用資源路徑更新構建部分?

<build> 
     <resources> 
      <resource> 
       <directory>src/main/webapp</directory> 
      </resource> 
     </resources> 
</build> 

編輯

前面已經說過,遮陽的目的不是爲了戰爭的包。

+1

然而,在使用嵌入式Web服務器構建jar時,Shade會派上用場,因爲它需要資源。 – h7r

+0

我自己的評論顯然沒有注意到戰爭可能會像罐子一樣嵌入服務器。 – h7r

0

這聽起來很想將源代碼打包成一個包。有一個maven-source-plugin它將創建一個包含源文件的jar。而且這通常在發佈週期中完成。如前所述,maven-share-plugin的意圖是將jar文件打包在一起(它們的內容;關鍵字:ueberjar)。

0

將您的webapp資源添加到JAR中有什麼意義?這就像戰爭。

將您的包裝類型更改爲war,它將起作用。

+0

您應該將您的要求澄清作爲對原始問題的評論,而不是對其的回答。 – Zero3

1

您需要將它放在src/main/resources/webapp中,或者明確指定適當的位置以便正確地抓住它。煩人,但它的作品。

對於那些問爲什麼這種事情有意義的事情,這是一個典型的嵌入式web服務器如Jetty的設置。

+0

根據@Yanflea的接受和提出的答案,您*需要*將文件放在src/main/resources /'文件夾中是不正確的。你確定嗎? – Zero3

+0

我編輯了答案以反映您的評論。 –

0

我使用資源插件將webapp移動到classes文件夾。

<plugin> 
    <artifactId>maven-resources-plugin</artifactId> 
    <version>3.0.2</version> 
    <executions> 
     <execution> 
      <id>copy-resources</id> 
      <phase>compile</phase> 
      <goals> 
       <goal>copy-resources</goal> 
      </goals> 
      <configuration> 
       <outputDirectory>${basedir}/target/classes/webapp</outputDirectory> 
       <resources> 
        <resource> 
         <directory>src/webapp/dist</directory> 
        </resource> 
       </resources> 
      </configuration> 
     </execution> 
    </executions> 
</plugin> 

這樣我可以在任何地方的文件夾放在我的web應用程序,定義目標目錄,它包含在我的陰影罐子。

相關問題