web-dev-qa-db-ja.com

maven2:WARからディレクトリを除外

this を試みて、ディレクトリ全体($ {basedir}/src/main/webapp/webscripts)をWARファイルから除外しましたが、失敗しました。なにが問題ですか?

これは機能しません:

<configuration>
   <webResources>
      <resource>
       <directory>${basedir}/src/main/webapp/webscripts</directory>
       <excludes>
        <exclude>**/*.*</exclude>
       </excludes>
      </resource>
   </webResources>
</configuration>

これも:

<configuration>
   <webResources>
      <resource>
       <directory>${basedir}/src/main/webapp</directory>
       <excludes>
        <exclude>**/webscripts</exclude>
       </excludes>
      </resource>
   </webResources>
</configuration>

誰でも助けることができますか?

44
pls

両方のソリューションは、リソースを追加してから非アクティブ化するため、役に立ちません。デフォルトでは、webappソースフォルダーはリソースメカニズムなしでコピーされます。

その一部を非アクティブ化するメカニズムは、 <warSourceExcludes> パラメータ、次のように:

<plugin>
    <groupId>org.Apache.maven.plugins</groupId>
    <artifactId>maven-war-plugin</artifactId>
    <version>2.1</version>
    <configuration>
        <warSourceExcludes>webscripts/**</warSourceExcludes>
    </configuration>
</plugin>
88

warSourceExcludesは単に名前が変更されていないようですpackagingExcludes

warSourceExcludes:warSourceDirectoryのコンテンツをコピーするときに除外するトークンのコンマ区切りリスト。

packagingExcludes:パッケージ化の前にWARから除外するトークンのカンマ区切りリスト。このオプションは、スキニーWARユースケースの実装に使用できます。

大きな違いがあります:packagingExcludesを使用すると、トークンは最終的なwarファイルから完全に除外されます。 warSourceExcludesを使用すると、warディレクトリをwarファイルにコピーするときにトークンが無視されます。その結果、トークンがwebappDirectoryに存在する場合、warSourceExcludesを使用する場合は無視されませんが、packagingExcludesを使用する場合は無視されます。

そして、動作する構文の例:

<warSourceExcludes>**/${project.artifactId}/**</warSourceExcludes>
31
Thomas

バージョン2.1-alpha-1では、これは誤ってwarSourceExcludesと名付けられました。正しいパラメーターは packagingExcludes です

使用例(WARからWEB-INF/statics /フォルダーを除く):

<plugin>
    <groupId>org.Apache.maven.plugins</groupId>
    <artifactId>maven-war-plugin</artifactId>
    <version>2.1.1</version>
    <configuration>
        <warName>searchservice-web</warName>
        <packagingExcludes>WEB-INF/statics/</packagingExcludes>
    </configuration>
</plugin>
6
igor

Project Structure

ソースファイルを削除するために、私はMavenで以下の構成を使用しました

 <plugin>
    <artifactId>maven-war-plugin</artifactId>
    <version>3.2.0</version>
    <configuration>
      <packagingExcludes>
        eb-app/app/**,eb-app/node_modules/**,eb-app/public/**,eb-app/server/**,eb-app/tests/**,eb-app/tmp/**,eb-app/vendor/**,eb-app/*
      </packagingExcludes>
    </configuration>
  </plugin>
4
Mani

*scriptsに一致する可能性のある2つのフォルダーを除外する必要があり、それらがリソースフォルダーにあったシナリオがありました。最初の混乱は、除外値をsrc/main/resources/*scriptsとして提供するかWEB-INF/classes/*scriptsとして提供するか、つまりコンパイル前またはコンパイル後の構造です。

ディレクトリ全体をwarファイルから除外するには、/**を提供することが非常に重要でした。私の場合、*scripts/**

これが機能する最終構成です。

    <packagingExcludes>WEB-INF/classes/*scripts/**</packagingExcludes>
1
James Jithin