Maven Clean:删除目标内的目录

ftk*_*tkg 9 maven maven-clean-plugin

我尝试了很多变种,但无法完成这项工作.一个例子(孩子pom.xml):

<plugin>
    <groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-clean-plugin</artifactId>
    <configuration>
        <filesets>
            <fileset>
                <directory>target</directory>
                <useDefaultExcludes>true</useDefaultExcludes>
                <excludes>
                    <exclude>myFolder</exclude>
                </excludes>
            </fileset>
        </filesets>
    </configuration>
</plugin>
Run Code Online (Sandbox Code Playgroud)

Maven总是试图删除我的文件夹.为什么?

Nam*_*man 8

亦如@ AR.3在回答表明这里clean阶段和目标会-

默认情况下,它会发现并删除在project.build.directory,project.build.outputDirectory,project.build.testOutputDirectory和project.reporting.outputDirectory中配置的目录.

尽管如此,如果您想要排除某个特定文件被删除,您可以按照以下方式执行相反的方法(一个简单的黑客) -

<plugin>
       <groupId>org.apache.maven.plugins</groupId>
       <artifactId>maven-clean-plugin</artifactId>
       <version>3.0.0</version>
       <configuration>
           <excludeDefaultDirectories>true</excludeDefaultDirectories>
           <filesets>
                <fileset>
                    <directory>target</directory>
                    <followSymlinks>false</followSymlinks>
                    <useDefaultExcludes>true</useDefaultExcludes>
                    <includes>
                          <include><!--everything other that what you want to exclude--></include>
                    </includes>
                 </fileset>
            </filesets>
        </configuration>
</plugin>
Run Code Online (Sandbox Code Playgroud)

更多关于excludeDefaultDirectories类似的联系 -

禁用删除为项目配置的默认输出目录.如果设置为true,则仅删除通过参数filesets选择的文件/目录.

编辑

确实可以使用直接方法排除特定文件被删除:

<configuration>
    <excludeDefaultDirectories>true</excludeDefaultDirectories>
        <filesets>
            <fileset>
                <directory>target</directory>
                <includes>
                    <include>**</include>
                </includes>
                <excludes>
                    <exclude><!-- folder you want to exclude --></exclude>
                </excludes>
            </fileset>
        </filesets>
</configuration>
Run Code Online (Sandbox Code Playgroud)