From release 6.0-rc3 we can describe a complete site’s layout using an yaml file. Through site schema you can set root page (called home) its children’s tree, add attachments and labels.
Use it is pretty straightforward, put your site.yaml in ${basedir}/src/site/confluence folder and describe your preferred layout following the site schema.
To simplify understanding, below there is a simple site descriptor
home: uri: encoding.confluence children: - name: "page 1" uri: page1.md - name: "page 2" uri: page2.md attachments: - name: "attach1.png" uri: attach1.png comment: attach1_comment contentType: "image/png" version: 1 attachments: - name: "home.png" uri: home.png comment: home_comment contentType: "image/png" version: 1 labels: - encoding - test
Attribute | Description | mandatory |
---|---|---|
space-key | space key (if set overrides the equivalent pom configuration) | no |
Attribute | Description | mandatory |
---|---|---|
uri | Content’s source | no |
name | Title of page | no (if uri is defined) |
parentPageId | parent page id (if set overrides the equivalent pom configuration) | no |
parentPage | parent page name (if set overrides the equivalent pom configuration) | no |
ignoreVariables | if it is true the variables ${...} are not injected during page processing | no |
Attribute | Description | mandatory |
---|---|---|
uri | Content’s source | no |
name | Title of page | no (if uri is defined) |
ignoreVariables | if it is true the variables ${...} are not injected during page processing | no |
Attribute | Description | mandatory |
---|---|---|
uri | Content’s source or a directory | no |
name | Name of attachment or a glob pattern | no (if uri is defined) |
comment | no | |
contentType | yes | |
version | no |
from version 5.0-rc4 the tag attachment supports also the file inclusion from directory
Example
# include all png files from myfolder attachments: - name: "*.png" uri: myfolder comment: file from myfolder contentType: "image/png" version: 1 # include all files from myfolder attachments: - uri: myfolder comment: "file from myfolder" version: 1
This tag has been added from version 5.0-rc3 and allows to choose where put the built-in generated pages Currently only plugin.goals is supported therefore such tag is useful when we are dealing with Maven Plugin Documentation
Attribute | Description | mandatory |
---|---|---|
ref | built-in generated pages Id. Currently only plugin.goals is supported | yes |
The uri attribute could refer to
File resource
We can refer to file in absolute way using file scheme (e.g. file:///Documents/page.confluence) or in relative way not using any scheme. In that case the path will be resolved starting from site home
Classpath resource
We can refer to resource using classpath schema. (e.g. classpath:page.confluence)
Network resource
We can refer to resource using http scheme. (e.g. http://www.thesite.com/page.confluence)
Since version 6.5 you can use Freemarker markup inside the Site Definition.
Following static Java classes are available in the model: * Paths (java.nio.Paths) * Files (java.nio.Files)
Ex. Files.exists(Paths.get('src/docs/anyfile.txt'))
Following built-in Freemarker models are available: * statics (ex. ${statics["java.lang.System"].currentTimeMillis()}) * enums (ex. ${enums["java.math.RoundingMode"].UP})
Model of the Maven project is included as project variable. Ex. <#assign tag = project.groupId + '-' + project.artifactId + '-' + project.version>.
<#assign tag = project.groupId + '-' + project.artifactId + '-' + project.version> home: uri: release-version.wiki children: - name: "Dependencies" uri: dependencies.wiki attachments: - name: "documentation-${tag}.pdf" uri: ../generated-docs/documentation.pdf contentType: "application/pdf" version: 1 comment: Documentation generated to PDF - name: "documentation-${tag}.html" uri: ../generated-docs/documentation.html contentType: "text/html" version: 1 comment: Single page HTML documentation<#if Files.exists(Paths.get('target/generated-docs/openapi.json')) == true> - name: "openapi-${tag}.json" uri: ../generated-docs/openapi.json contentType: "application/json" version: 1 comment: OpenAPIv3 JSON Documentation</#if><#if Files.exists(Paths.get('target/generated-docs/openapi.yaml')) == true> - name: "openapi-${tag}.yaml" uri: ../generated-docs/openapi.yaml contentType: "text/yaml" version: 1 comment: OpenAPIv3 YAML Documentation</#if><#if Files.exists(Paths.get('target/generated-docs/generated-class-diagram.svg')) == true> - name: "generated-class-diagram-${tag}.svg" uri: ../generated-docs/generated-class-diagram.svg contentType: "image/svg+xml" version: 1 comment: Generated UML class diagram</#if>