2014-06-26 71 views
1

使用行家遮陽簾插件我試圖按照以下步驟創建一個項目文件結構:Maven的遮陽複製WEB-INF

enter image description here

的問題是,下面的POM配置不創建WEB-INF目錄。

<plugin> 
      <groupId>org.apache.maven.plugins</groupId> 
      <artifactId>maven-shade-plugin</artifactId> 
      <version>2.3</version> 
      <executions> 
       <execution> 
        <phase>package</phase> 
        <goals> 
         <goal>shade</goal> 
        </goals> 
        <configuration> 
         <filters> 
          <filter> 
           <artifact>*:*</artifact> 
           <excludes> 
            <exclude>META-INF/*.SF</exclude> 
            <exclude>META-INF/*.DSA</exclude> 
            <exclude>META-INF/*.RSA</exclude> 
           </excludes> 
          </filter> 
         </filters> 
         <createDependencyReducedPom>true</createDependencyReducedPom> 
         <transformers> 
          <transformer implementation="org.apache.maven.plugins.shade.resource.ManifestResourceTransformer"> 
           <mainClass>com.my.package.Main</mainClass> 
          </transformer> 
         </transformers> 
        </configuration> 
       </execution> 
      </executions> 
     </plugin> 

基本上我需要將我的web.xml文件,類和lib文件複製到項目根目錄WEB-INF中。

更新:抱歉,我從我的pom複製了錯誤的插件到原來的問題!

更新:如果我從pom聲明中添加包裝:<packaging>war</packaging>根據OQ完成WEB-INF文件結構。但是,通過此聲明,com目錄現在不包含我的包,因此無法找到主類。

它的外觀與<packaging>war</packaging>

enter image description here

應該怎麼看:

enter image description here

+0

聽起來像是你嘗試創建一個WAR歸檔,爲什麼不使用maven-受戰爭爲此目的的插件? – khmarbaise

+0

我試過了maven-war-plugin。我正在嘗試與主類創建可執行的戰爭。但是,主類不能在默認包中。它必須在聲明的包中。 – tarka

回答

0

maven-assembly插件可以讓更多的靈活性,這將是很容易實現使用Assembly插件


+0

我不熟悉maven-assembly-plugin。似乎沒有多少運氣。 – tarka

+0

它的程序集描述符是非常直接的,你指定輸入目錄和輸出目錄裏面的程序集爲你組裝它,檢查一些例子 –

0

有很多可能的答案,以實現與Maven預期的效果。然而,根據我給我更新發現,加入Maven的antrun-插件用以下解決我的問題:

<plugin> 
      <artifactId>maven-antrun-plugin</artifactId> 
      <executions> 
       <execution> 
        <id>move-main-class</id> 
        <phase>compile</phase> 
        <configuration> 
         <tasks> 
          <copy todir="${project.build.directory}/${project.artifactId}"> 
           <fileset dir="${project.build.directory}/classes/"> 
           </fileset> 
          </copy> 
         </tasks> 
        </configuration> 
        <goals> 
         <goal>run</goal> 
        </goals> 
       </execution> 
      </executions> 
     </plugin>