maven-clean-plugin 没有删除所有给定的目录
maven-clean-plugin is not removing all given directories
在我的项目.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
创建的目录。反正最后一个没问题。
问题
现在的问题是,上述文件夹之一没有被无缘无故地删除。而且它始终是第一个 "in the middle"。我添加了 3 filesets
并且始终没有删除第二个,请参阅日志:
[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
结果,我认为这是它中断的地方:
解析 pom.xml
后,它会使用此参数读取配置。 不过我没有放那儿
好的,我找到问题了!它实际上是插件中的一个错误,并且已经被报告过。它影响 maven-clean-plugin 2.6.1
.
这是我这边的配置错误,请继续阅读解决方案。
情况
您有一个parent项目和一个child项目,都必须使用该插件。
现在;
- 在 parent 项目中您指定了一些文件集。
- 在 child 项目中指定了一些文件集。
我认为的预期:
插件读取 parent 和 child 的文件集并全部清理。
发生了什么:
插件用 child 的文件集覆盖了 parent 的文件集。文件集按顺序被覆盖。但是文件集的 parents 配置没有被清除!
我的情况:
Parent.pom:
<filesets>
<fileset>
<directory>test-output</directory>
</fileset>
<fileset>
<directory>${basedir}/</directory>
<includes>
<include>.bindings</include>
</includes>
</fileset>
</filesets>
儿童 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. http://maven.apache.org/pom.html
值得一提的是,在child的项目.pom
中设置combine.children="append"
即可。
在我的项目.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
创建的目录。反正最后一个没问题。
问题
现在的问题是,上述文件夹之一没有被无缘无故地删除。而且它始终是第一个 "in the middle"。我添加了 3 filesets
并且始终没有删除第二个,请参阅日志:
[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
结果,我认为这是它中断的地方:
解析 pom.xml
后,它会使用此参数读取配置。 不过我没有放那儿
好的,我找到问题了!它实际上是插件中的一个错误,并且已经被报告过。它影响 maven-clean-plugin 2.6.1
.
这是我这边的配置错误,请继续阅读解决方案。
情况
您有一个parent项目和一个child项目,都必须使用该插件。
现在;
- 在 parent 项目中您指定了一些文件集。
- 在 child 项目中指定了一些文件集。
我认为的预期:
插件读取 parent 和 child 的文件集并全部清理。
发生了什么:
插件用 child 的文件集覆盖了 parent 的文件集。文件集按顺序被覆盖。但是文件集的 parents 配置没有被清除!
我的情况: Parent.pom:
<filesets>
<fileset>
<directory>test-output</directory>
</fileset>
<fileset>
<directory>${basedir}/</directory>
<includes>
<include>.bindings</include>
</includes>
</fileset>
</filesets>
儿童 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. http://maven.apache.org/pom.html
值得一提的是,在child的项目.pom
中设置combine.children="append"
即可。