编程语言
首页 > 编程语言> > java – maven-clean-plugin没有删除所有给定的目录

java – maven-clean-plugin没有删除所有给定的目录

作者:互联网

在我的项目.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创建的目录.无论如何,最后一个工作正常.

问题

现在的问题是,无论如何,永远不会删除上述文件夹之一.它始终是“中间的”.我添加了3个文件集,并且第二个文件集总是没有删除,请参阅日志:

[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 = [])

而且第二个选项总是包含这个部分:includes = [.bindings]我认为该文件夹没有被删除.

为什么会发生这种情况,以及如何解决这个问题?

编辑,调试日志

mvn -X clean结果,我认为这是它破坏的地方:

http://pastebin.com/ep1i2Bjk

解析pom.xml后,它会使用此参数读取配置.但是,我没有把它放在那里.

解决方法:

好的,我发现了这个问题!它实际上是插件中的一个错误,已经报告过了.它会影响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>

Childs pom:

<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

解决

For configuration there are some magic attributes to instruct how xml elements should be combined. In this case add combine.children=”append” to the filesets tag. More details about this can be found on the POM Reference page. 07001

值得一提的是,在child的项目.pom中设置combine.children =“append”就足够了.

标签:java,maven,maven-plugin,maven-3,maven-clean-plugin
来源: https://codeday.me/bug/20190824/1708482.html