【问题标题】:How can I exclude empty folders with Asciidoctor maven plugin如何使用 Asciidoctor maven 插件排除空文件夹
【发布时间】:2016-10-15 23:53:49
【问题描述】:

我使用 Asciidoctor Maven 插件从 adoc 生成 HTML。不幸的是,它会从sourceDirectory 中指定的目录中复制每个源目录。如何排除这些空文件夹?

<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) 的文档,我可以使用 resources 标签来做到这一点。我已经尝试过这种方式,但它不起作用:

<configuration>
    <resources>
        <resource>
            <includes>
                <include>**/*.*</include>
            </includes>
        </resource>
    </resources>
...
</configuration>

【问题讨论】:

    标签: maven asciidoctor


    【解决方案1】:

    asciidoctor-maven-plugin 不支持删除空目录。有the issue 144关于那个,不考虑修复。

    您可以在 Ascii Doctor 运行后使用 Antrun Plugindelete empty directories 解决这个问题:

    <!-- 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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-05-26
      • 1970-01-01
      • 2021-12-30
      • 2014-01-26
      相关资源
      最近更新 更多