5

私のプロジェクトでは、次のよう.pomに設定しました:maven-clean-plugin

<plugin>
  <artifactId>maven-clean-plugin</artifactId>
  <version>2.6.1</version>
  <configuration>
    <filesets>
      <fileset>
        <directory>src/main/webapp/bower_components</directory>
      </fileset>
      <fileset>
        <directory>node_modules</directory>
      </fileset>
      <fileset>
        <directory>node</directory>
      </fileset>
    </filesets>
  </configuration>
 </plugin>

プラグインの目的は、によって作成されたディレクトリを削除することfrontend-maven-pluginです。とにかく、最後のものは問題なく動作します。


問題

問題は、理由もなく、上記のフォルダーの 1 つが決して削除されないことです。そして、それは常に「真ん中」のものです。3 つ追加しましfilesetsたが、常に 2 つ目は削除されません。ログを参照してください。

[INFO] Deleting /src/main/webapp/bower_components (includes = [], excludes = [])
[INFO] Deleting /node_modules (includes = [.bindings], excludes = [])
[INFO] Deleting /node (includes = [], excludes = [])

フォルダの順序を変更した場合:

[INFO] Deleting /src/main/webapp/bower_components (includes = [], excludes = [])
[INFO] Deleting /node (includes = [.bindings], excludes = [])
[INFO] Deleting /node_modules (includes = [], excludes = [])

また、2番目のオプションには常にこの部分が含まれてい includes = [.bindings]ます。これにより、フォルダーが削除されないと思います。

なぜそれが起こっているのですか、そしてそれを修正する方法は?


EDIT、デバッグログ

mvn -X clean結果、これが壊れるところだと思います:

http://pastebin.com/ep1i2Bjk

を解析した後pom.xml、このパラメーターを使用して構成を読み取ります。しかし、私はそこに入れませんでした。

4

1 に答える 1

8

OK、私は問題を見つけました! これは実際にはプラグインのバグであり、すでに報告されています。に影響しmaven-clean-plugin 2.6.1ます。

それは私の側の設定ミスでした。解決策を読んでください。

状況

親プロジェクトと子プロジェクトがあり、どちらもプラグインを使用する必要があります。

今;

  • 親プロジェクトでは、いくつかのファイルセットを指定します。
  • 子プロジェクトでは、いくつかのファイルセットを指定します。

私が期待していると思うこと:

プラグインは、親と子の両方のファイルセットを読み取り、それらすべてをクリーンアップします。

何が起こるのですか:

プラグインは、親のファイルセットを子のファイルセットでオーバーライドします。ファイルセットは順番にオーバーライドされます。ただし、ファイルセットの親構成はクリアされません!


私の状況: 親 .pom:

<filesets>
   <fileset>
      <directory>test-output</directory>
   </fileset>
   <fileset>
     <directory>${basedir}/</directory>
     <includes>
        <include>.bindings</include>
     </includes> 
   </fileset>
</filesets>

チャイルズポン:

<filesets>
    <fileset>
        <directory>node</directory>
    </fileset>
    <fileset>
        <directory>node_modules</directory>
    </fileset>
    <fileset>
        <directory>src/main/webapp/bower_components</directory>
    </fileset>
</filesets>

そして、上記の情報で; プラグインによって読み取られる構成は次のとおりです。

<filesets>
    <fileset>
        <directory>node</directory>
    </fileset>
    <fileset>
        <directory>node_modules</directory>
        <includes>
            <include>.bindings</include>
        </includes>
    </fileset>
    <fileset>
        <directory>src/main/webapp/bower_components</directory>
    </fileset>
</filesets>

5 つのファイルセットを持つ構成の代わりに。

バグレポートhttps://issues.apache.org/jira/browse/MCLEAN-64

解決済み

構成には、xml 要素をどのように組み合わせるかを指示する魔法の属性がいくつかあります。この場合、combine.children="append" をファイルセット タグに追加します。詳細については、POM リファレンス ページを参照してください。http://maven.apache.org/pom.html

言及する価値があるのはcombine.children="append"、 child's project に設定するだけで十分だということです.pom

于 2015-09-01T11:15:50.167 に答える