如何使用Asciidoctor Maven插件排除空文件夹

3
我使用Asciidoctor Maven插件从adoc生成HTML。不幸的是,它会复制在中指定的目录中的每个源目录。我该如何排除这些空文件夹?
<plugin>
    <groupId>org.asciidoctor</groupId>
    <artifactId>asciidoctor-maven-plugin</artifactId>
    <version>1.5.3</version>
    <executions>
        <execution>
            <id>test-id</id>
            <phase>generate-resources</phase>
            <goals>
                <goal>process-asciidoc</goal>
            </goals>
            <configuration>
                <sourceDirectory>mysourcedirectory</sourceDirectory>
                <sourceDocumentName>Test.adoc</sourceDocumentName>
                <outputDirectory>${project.build.directory}/outputdir</outputDirectory>
                <relativeBaseDir>true</relativeBaseDir>
                <preserveDirectories>true</preserveDirectories>
                <backend>html</backend>
            </configuration>
        </execution>
    </executions>
</plugin>

我的输入目录看起来像这样:

 ── mysourcedirectory
    ├── Test.adoc  
    └── subfolder1
        ├── doc1.adoc    
        └── doc2.adoc

asciidoc的输出如下所示(subfolder1为空,我希望它被排除在外):
 ── mysourcedirectory
    ├── Test.adoc  
    └── subfolder1

根据Asciidoc文档(https://github.com/asciidoctor/asciidoctor-maven-plugin#configuration-options),我可以使用资源标签来实现。我尝试了这种方式,但它没有起作用。
<configuration>
    <resources>
        <resource>
            <includes>
                <include>**/*.*</include>
            </includes>
        </resource>
    </resources>
...
</configuration>
1个回答

2
Asciidoctor-Maven-Plugin不支持移除空目录。有问题144与此相关,但是它并没有被考虑修复。
你可以通过使用Antrun插件删除空目录来解决这个问题。在Ascii Doctor运行后进行操作即可。
<!-- your configuration of Ascii Doctor -->
<plugin>
  <groupId>org.asciidoctor</groupId>
  <artifactId>asciidoctor-maven-plugin</artifactId>
  <version>1.5.3</version>
  <!-- rest of your config -->
</plugin>
<!-- deleting empty directories in output directory of Ascii Doctor -->
<plugin>
  <artifactId>maven-antrun-plugin</artifactId>
  <version>1.8</version>
  <executions>
    <execution>
      <id>delete-empty-dirs</id>
      <phase>generate-resources</phase>
      <goals>
        <goal>run</goal>
      </goals>
      <configuration>
        <target>
          <delete includeemptydirs="true">
            <fileset dir="${project.build.directory}/generated-docs">
              <and>
                <size value="0" />
                <type type="dir" />
              </and>
            </fileset>
          </delete>
        </target>
      </configuration>
    </execution>
  </executions>
</plugin>

为了确保 Antrun 插件在 Ascii Doctor 之后被调用,您可以将其声明放置在 asciidoctor-maven-plugin 之后,并确保它们绑定到相同的阶段。在上面的示例中,我使用了 generate-resources。请注意保留 HTML 标签。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接