[JAVA] Verwenden Sie Vorlagen für den Klassenpfad mit Apache Velocity

https://stackoverflow.com/questions/2931516/loading-velocity-template-inside-a-jar-file

build.gradle


dependencies {
    implementation 'org.apache.velocity:velocity:1.7'
}

/src/main/resources/templates/hoge.vm


key = $key
import java.io.IOException;
import java.io.StringWriter;
import java.util.Properties;

import org.apache.velocity.Template;
import org.apache.velocity.VelocityContext;
import org.apache.velocity.app.Velocity;
import org.apache.velocity.context.Context;
import org.apache.velocity.runtime.RuntimeConstants;
import org.apache.velocity.runtime.resource.loader.ClasspathResourceLoader;

public class Main {

  public static void main(String[] args) {
    Properties p = new Properties();
    p.setProperty(RuntimeConstants.RESOURCE_LOADER, "classpath");
    p.setProperty("classpath.resource.loader.class", ClasspathResourceLoader.class.getName());
    Velocity.init(p);

    Context context = new VelocityContext();
    context.put("key", "value0001");

    Template template = new Template();
    template = Velocity.getTemplate("templates/hoge.vm", "UTF-8");

    try (StringWriter body = new StringWriter();) {
      template.merge(context, body);
      body.flush();
      System.out.println(body.toString());;
    } catch (IOException e) {
      e.printStackTrace();
    }
  }
}

Recommended Posts

Verwenden Sie Vorlagen für den Klassenpfad mit Apache Velocity
Programmieren mit Ruby (unterwegs)
FileUpload mit Rest auf Apache Wicket
Überprüfen Sie den Betrieb mit dem Steg mit Maven.
Versuchen Sie, den Dienst auf Android Oreo zu verwenden
Verwenden von JupyterLab + Java mit WSL unter Windows 10
Hinweise zur Verwendung von FCM mit Ruby on Rails
Versuchen Sie es mit der Wii-Fernbedienung in Java
Ein kurzer Hinweis zur Verwendung von jshell mit dem offiziellen Docker-Image des JDK
ValidationMessages.properties sollte im Klassenpfad nicht mehrfach sein
Verwenden von JUnit über die Befehlszeile unter Ubuntu
Geben Sie ein Suffix für die Methode an
Veröffentlichen Sie die mit Ruby on Rails erstellte App
Geben Sie ClassPath an, wenn Sie jupyter + Java mit WSL verwenden
Geben Sie ein Suffix für Methode 2 heraus
Stimmt die Anmerkungen auf der Schnittstelle mit Spring AOP überein
Bis Sie den Apache Velocity-Beispielcode ausführen
Bestimmen Sie die aktuelle Seite mit Ruby on Rails
Zeigen Sie die Liste in setDetails mit Federsicherheit auf dem Bildschirm an
Versuchen Sie es mit dem Ruby on Rails-Abfrageattribut