Configuring a publication
Main configuration blocks
- 
Groovy 
asciidoc {
  publications {
    main {
        sourceSet {
          sources { (1)
          }
          resources { (2)
          }
          attributes { (3)
          }
          languages { (4)
          }
        }
        output 'asciidoctorj', 'html' (5)
        output 'asciidoctorj', 'pdf'
    }
  }
}| 1 | Customise asciidoc sources to be processed. | 
| 2 | Additional resources, such as images. | 
| 3 | Use attributesblock to configure Asciidoc attributes. | 
| 4 | Human-language additional configuration. | 
| 5 | Configures the outputs for this publication.
The format is toolchainName, outputFormat.
See Configuring Toolchains for more info. | 
Sources and resources
- 
Groovy 
asciidoc {
  publications {
    main {
        sourceSet {
            sources {
              include 'foo.adoc', 'star*.adoc' (1)
            }
            resources { (2)
              from 'images', {
                include '*.png'
              }
            }
            sourceDir = 'src/docs/asciidoc' (3)
        }
    }
  }
}| 1 | A list of file patterns for files to include. If nothing is set, all asciidoc documents are included. It uses an Ant-style PatternSet. | 
| 2 | Configures a copy specification for resources. These are files, such as images, that are required as part of publication, but not processed by an Asciidoctor engine. | 
| 3 | It is possible to override the source directory, although the convention of src/docs/asciidoc<PUBLICATION>should suffice for most cases. | 
Asciidoc attributes
asciidoc {
  publications {
    main {
      sourceSet {
          attributes {
              replaceAll 'source-language': 'java' (1)
              add 'source-language': 'java', 'project-version' : '1.2.3' (2)
              add 'source-language', 'java' (3)
              add 'publish-time', asTime(LocalTime.now()) (4)
              add 'publish-date', asDate(LocalDate.now()) (5)
              addAttributeProvider { -> [ 'source-language': 'java']} (6)
          }
      }
    }
  }
}| 1 | Replace all attributes, except those provided by providers with this new set. | 
| 2 | Add more attributes as a map. | 
| 3 | Add a single attribute. | 
| 4 | Add an attribute and force it to be formatted as a time value.
Accepts any java.time.*values, or anything string that can be parsed. | 
| 5 | Add an attribute and force it to be formatted as a date value.
Accepts any java.time.*values, or anything string that can be parsed. | 
| 6 | Add a provider of attributes. | 
Treating warnings as errors
- 
Groovy 
asciidoc {
  publications {
    main {
      sourceSet {
        fatalWarnings ~/missing attribute/ (1)
        missingIncludesAreFatal() (2)
      }
    }
  }
}| 1 | Provide one or more patterns for scanning log messages. These can be strings, regexes, or anything else can be lazy-evaluated to either. | 
| 2 | Adds the correct pattern for detecting missing include files. | 
Docinfo
There is some DSL support for configuring docinfo.
It is important to note that for any of headIsPrivate, headerIsPrivate and footerIsPrivate, it configures it for ALL the source AsciiDoc file within the source set.
It is still possible to override a DSL setting within a single source file.
For people that ustilise a common docinfo directory, setting it via the DSL has the benefit that Gradle’s up-to-date checks can then be used to detect changes.
- 
Groovy 
asciidoc {
  publications {
    main {
      sourceSet {
        docInfo {
            headIsPrivate = false (1)
            headerIsPrivate = false (2)
            footerIsPrivate = false (3)
            docInfoDir = 'src/docs/docinfo' (4)
        }
      }
    }
  }
}| 1 | Set whether headis private or not. | 
| 2 | Set whether headeris private or not. | 
| 3 | Set whether footeris private or not. | 
| 4 | Configures a common docinfo source directory. | 
| Currently, setting docInfoDiraffects all tasks associated with the specific publication where it was set, even those that are no docinfo-aware.
For example, if your publication builds both PDF and HTML files, and you changedocbook-header.html, then the PDF output will also be rebuilt.
This might be rectified in a future release. |