Minisite goal. Enables to generate a small website. It needs a "documentation" module, it uses the following default layout:

  • src/main/doc/content: contains a set of .adoc (converted to .html)

  • src/main/doc/assets: contains a set of files moved "as this" to site output directory (css, js)

  • src/main/doc/templates: contains the templates for the layout and pages of the website It can optionally embed an in-browser documentation assistant (RAG chat), see llmChatEnabled and Minisite LLM Chat < https://yupiik.io/tools-maven-plugin/minisite-llm.html> .

Coordinates

<plugin>
  <groupId>io.yupiik.maven</groupId>
  <artifactId>yupiik-tools-maven-plugin</artifactId>
  <version>1.3.1-SNAPSHOT</version>
</plugin>

To call this goal from the command line execute: mvn yupiik-tools:minisite.

To bind this goal in the build you can use:

<plugin>
  <groupId>io.yupiik.maven</groupId>
  <artifactId>yupiik-tools-maven-plugin</artifactId>
  <version>1.3.1-SNAPSHOT</version>
  <executions>
    <execution>
      <id>my-execution</id>
      <goals>
        <goal>minisite</goal>
      </goals>
      <configuration>
        <!-- execution specific configuration come there -->
      </configuration>
    </execution>
  </executions>
</plugin>

You can execute this goal particularly with mvn yupiik-tools:minisite@my-execution command.

Configuration

addCodeCopyButton (boolean)

Adds a copy button to code snippets (highlightjs). Default value: true. Property: ${yupiik.minisite.addCodeCopyButton}.

addIndexRegistrationPerCategory (boolean)

Should blog categories pages be added to home page. Default value: true. Property: ${yupiik.minisite.addIndexRegistrationPerCategory}.

asciidoctorExtensions (List)

Asciidoctor extensions to register in Asciidoctor instance. Can be in target/classes.

attributes (Map)

Asciidoctor attributes.

blogCategoriesCustomizations (Map)

Enables to customize how categories are shown on home page.

blogPageSize (int)

For blog generated pages, the number of items to keep per page. Default value: 10. Property: ${yupiik.minisite.blogPageSize}.

blogPublicationDate (String)

Max date until when posts are published. today and infinite are supported as dynamic alias. Using default the minisite rendering uses today and the serve mode uses infinite to get local previews. Default value: default. Property: ${yupiik.minisite.blogPublicationDate}.

classes (java.io.File)

target/classes for pre-actions if needed. Default value: ${project.build.outputDirectory}. Property: ${yupiik.minisite.classes}.

confluence (io.yupiik.maven.service.confluence.Confluence)

copyright (String)

copyright value in the footer when using default theme. Property: ${yupiik.minisite.copyright}.

createADefault404Page (boolean)

Should a 404.html be generated by default - useful for github pages for example. If you want custom text just override this page - you don't even need to turn this false, if present we respect it. Default value: true. Property: ${yupiik.minisite.createADefault404Page}.

createLlmsTxt (boolean)

Should a llms.txt be generated. Default value: false. Property: ${yupiik.minisite.createLlmsTxt}.

createRobotsTxt (boolean)

Should a robots.txt be generated. Default value: false. Property: ${yupiik.minisite.createRobotsTxt}.

customHead (String)

Custom head links (to add custom css easily). Property: ${yupiik.minisite.customHead}.

customMenu (String)

Custom html template for menus. Property: ${yupiik.minisite.customMenu}.

customScripts (String)

Custom scripts links (to add custom js easily). Property: ${yupiik.minisite.customScripts}.

description (String)

Default HTML page description. Property: ${yupiik.minisite.description}.

excludedArtifacts (List)

Artifacts to ignore in the classloader loading asciidoctor extensions and preactions. Default value: org.asciidoctor:asciidoctorj. Property: ${yupiik.minisite.excludedArtifacts}.

ftp (io.yupiik.maven.service.ftp.configuration.Ftp)

generateBlog (boolean)

Generate blog pages if it has some blog entries - skipped otherwise. Default value: true. Property: ${yupiik.minisite.generateBlog}.

generateIndex (boolean)

Generate index page. Default value: true. Property: ${yupiik.minisite.generateIndex}.

generateSiteMap (boolean)

Generate sitemap page (xml). Default value: true. Property: ${yupiik.minisite.generateSiteMap}.

git (io.yupiik.maven.service.git.Git)

gravatar (io.yupiik.tools.minisite.MiniSiteConfiguration$GravatarConfiguration)

Gravatar configuration.

includeProvidedScope (boolean)

Should asciidoctor extensions and preactions be loaded with the provided dependencies in the classloader or not. Default value: true. Property: ${yupiik.minisite.includeProvidedScope}.

indexSubTitle (String)

When index is generated the content page title. Property: ${yupiik.minisite.indexSubTitle}.

indexText (String)

When index is generated the content page title. Property: ${yupiik.minisite.indexText}.

injectBlogMeta (boolean)

Add reading time on blog pages. Default value: true. Property: ${yupiik.minisite.injectBlogMeta}.

injectYupiikTemplateExtensionPoints (boolean)

Use yupiik theme. Default value: true. Property: ${yupiik.minisite.injectYupiikTemplateExtensionPoints}.

linkedInCompany (String)

linkedInCompany name (in linkedin url). Default value: yupiik. Property: ${yupiik.minisite.linkedInCompany}.

llmChatEnabled (boolean)

Enable LLM-powered chat on the site: a fully in-browser, retrieval-augmented (RAG) assistant over the generated documentation (no backend, no API key). At build time the documentation is chunked and embedded with all-MiniLM-L6-v2; at runtime the browser embeds the question with the same model and a local WebLLM model (llmModelId) answers using the retrieved chunks. See Minisite LLM Chat for the build-time setup and a description of the underlying mechanism.

Requires the langchain4j-embeddings-all-minilm-l6-v2 dependency to be added as a plugin dependency (it ships the embedding model used at build time); the build fails fast if it is missing: <dependency> <groupId>dev.langchain4j</groupId> <artifactId>langchain4j-embeddings-all-minilm-l6-v2</artifactId> <version>1.16.1-beta26</version> </dependency> See also: Minisite LLM Chat documentation < https://yupiik.io/tools-maven-plugin/minisite-llm.html> . Default value: false. Property: ${yupiik.minisite.llmChatEnabled}.

llmModelId (String)

WebLLM model identifier for the chat. Default value: Llama-3.2-3B-Instruct-q4f16_1-MLC. Property: ${yupiik.minisite.llmModelId}.

logo (String)

Logo url. Default value: {{base}}/images/logo.svg. Property: ${yupiik.minisite.logo}.

logoSideText (String)

Text next to the logo text. Default value: Docs. Property: ${yupiik.minisite.logoSideText}.

logoText (String)

Default logo text for default template. Property: ${yupiik.minisite.logoText}.

notIndexedPages (List)

List of pages to ignore in search.json when search is enabled, typically useful if you create an all in one page.

preActions (List)

Actions to execute before any rendering. Typically used to generate some content. Note that maven-secret: can be used in configuration values to lookup a server secret password from maven settings.xml.

preferYupiikAsciidoc (boolean)

Should Yupiik asciidoctor-java be used instead of asciidoctorj (over jruby). While this is likely faster to bootstrap and render it is not as complete as asciidoctor as of today and requires to run at least on Java 17. Default value: false. Property: ${yupiik.minisite.preferYupiikAsciidoc}.

requires (List)

Warning: this must be a shared settings by all executions. Override defaults require - completely.

reverseBlogOrder (boolean)

Should page sorting be reversed (by published date). Default value: true. Property: ${yupiik.minisite.reverseBlogOrder}.

rssFeedFile (String)

RSS feed location (relative to the output) if set. Property: ${yupiik.minisite.rssFeedFile}.

searchIndexName (String)

Generate search json. Default value: search.json. Property: ${yupiik.minisite.searchIndexName}.

siteBase (String)

Default HTML page description. Default value: http://localhost:4200 . Property: ${yupiik.minisite.siteBase}.

skip (boolean)

Skip mojo execution. Default value: false. Property: ${yupiik.minisite.skip}.

skipIndexTitleDocumentationText (boolean)

Should Documentation title suffix be skipped. Default value: false. Property: ${yupiik.minisite.skipIndexTitleDocumentationText}.

skipRendering (boolean)

Skip site rendering. Default value: false. Property: ${yupiik.minisite.skipRendering}.

source (java.io.File)

Where to read content (layout root) from. Default value: ${project.basedir}/src/main/minisite. Property: ${yupiik.minisite.source}.

target (java.io.File)

Where to generate the site. Default value: ${project.build.directory}/${project.build.finalName}. Property: ${yupiik.minisite.target}.

templateAddLeftMenu (boolean)

Should left menu (global navigation) be added from index links. Default value: true. Property: ${yupiik.minisite.addLeftMenu}.

templateDirs (List)

Template directory if set. Property: ${yupiik.slides.templateDirs}.

templateExtensionPoints (Map)

Custom default theme extension points. An extension point is a placeholder in a template surrounded by 3 braces: {{{xyz}} }. Property: ${yupiik.minisite.templateExtensionPoints}.

templatePrefixes (List)

Template file name added before the content. Default value: header.hb,menu.hb. Property: .

templateSuffixes (List)

Template file name added after the content. Default value: footer-top.hb,footer-end.hb. Property: .

title (String)

Default HTML page title. Property: ${yupiik.minisite.title}.

useDefaultAssets (boolean)

Use default assets. Default value: true. Property: ${yupiik.minisite.useDefaultAssets}.

usePluginAsParentClassLoader (String)

A boolean or auto (= if asciidoctorExtensions is not empty it behaves as true) to use the plugin classloader as parent for preaction and asciidoctor extension or not. Default value: auto. Property: ${yupiik.minisite.usePluginAsParentClassLoader}.

workDir (java.io.File)

Where to extract files needed for the rendering. Default value: ${project.build.directory}/yupiik-workdir. Property: ${yupiik.workDir}.