07 February 2018

blog

Mise en place du plugin Ingenieux

Je suis [JBake Maven Plugin Walkthough] pour expliquer le fonctionnement du plugin

Il faut forker le [jbake-sample] sur github.

L'exemple qui est donné est inutilment complexe, puisqu'il fail l'hypothèse d'un déploiement dans S3.

Je peux supprimer une bonne partie du code donnée dans l'exemple.

On obtient l'erreur suivante :

java.lang.Exception: Error: Source folder must exist!

On peut la supprimer en ajoutant ceci :

    <inputDirectory>${project.basedir}</inputDirectory>
    <outputDirectory>${project.build.directory}/site/</outputDirectory>

Il reste l'erreur suivante à la generation :

No template engine found for template: archive.ftl
[...]
config.title

Des exemples plus simples sont donné dans [Integration of JBake in Maven – Static Websites].

Ajout de la section suivante :

    <dependencies>
        <!-- for freemarker templates (.ftl) -->
        <dependency>
            <groupId>org.freemarker</groupId>
            <artifactId>freemarker</artifactId>
            <version>2.3.20</version>
        </dependency>
    </dependencies>

En ajoutant des dépendances dans le plugin, il n'y a plus d'erreur pour trouver le template engine.

Par contre :

[ERROR] Rendering index [C:\Users\hnlocher\Desktop\EssaiJBake\target\site\index.html]...failed!
org.jbake.template.RenderingException: freemarker.core.InvalidReferenceException: The following has evaluated to null or missing:
==> content.rootpath  [in template "index.ftl" at line 18, column 56]

Tip: If the failing expression is known to be legally null/missing, either specify a default value with myOptionalVar!myDefault, or use <#if myOptionalVar??>when-present<#else>when-missing</#if>. (These only cover the last step of the expression; to cover the whole expression, use parenthessis: (myOptionVar.foo)!myDefault, (myOptionVar.foo)??

Le problème semble être que la variable ${content.rootpath} n'est pas correctement initialisée. La Documentation JBake 2.5.1 - section global indique qu'il s'agit d'une variable normalement toujours disponible pour les templates.

Dans l'extrait du template suivant :

    <p>Older posts are available in the <a href="${content.rootpath}${config.archive_file}">archive</a>.</p>

Références

Mise en place du plugin Blazeit

https://github.com/Blazebit/jbake-maven-plugin

Il faut déplacer les sources, car le plugin à l'air sourd au paramètres lui indiquant les sources :
jbake.inputDirectory
jbake.outputDirectory

Erreur : jbake [WARNING] Unable to load a suitable rendering engine for extensions [md]

Je trouve la réponse ici :

En fait, le problème venait du fait que le plugin de conversion du markdown doit
être explicitement chargé.

Il faut donc ajouter la dépendance suivante dans le fichier pom.xml.

<dependency>
  <groupId>org.pegdown</groupId>
  <artifactId>pegdown</artifactId>
  <version>1.4.2</version>
</dependency>