Skip to main content

Installation

mjml-java is a pure Java MJML-to-HTML renderer with zero external dependencies (for the core module). It requires Java 17 or later.

Modules

mjml-java is a multi-module project. Most users only need the core module:

ModuleArtifact IDDescription
Coremjml-java-coreMJML renderer, all 31 components, CSS inliner. Zero external dependencies.
Resolversmjml-java-resolversAdditional IncludeResolver implementations: URL, caching, composite, map, prefix-routing. UrlIncludeResolver includes SSRF protections and explicit hostname allowlisting. Zero external dependencies (JDK java.net.http).
Springmjml-java-springSpring Boot 4.0+ auto-configuration, MjmlService, Thymeleaf integration.
BOMmjml-java-bomBill of Materials for consistent version management.

Core Module

Maven

Add the following dependency to your pom.xml:

<dependency>
<groupId>dev.jcputney</groupId>
<artifactId>mjml-java-core</artifactId>
<version>1.0.1</version>
</dependency>

Gradle

Add the following to your build.gradle:

implementation 'dev.jcputney:mjml-java-core:1.0.1'

Or for Kotlin DSL (build.gradle.kts):

implementation("dev.jcputney:mjml-java-core:1.0.1")

Using the BOM

To manage versions across multiple modules, import the BOM:

Maven

<dependencyManagement>
<dependencies>
<dependency>
<groupId>dev.jcputney</groupId>
<artifactId>mjml-java-bom</artifactId>
<version>1.0.1</version>
<type>pom</type>
<scope>import</scope>
</dependency>
</dependencies>
</dependencyManagement>

<dependencies>
<dependency>
<groupId>dev.jcputney</groupId>
<artifactId>mjml-java-core</artifactId>
</dependency>
<dependency>
<groupId>dev.jcputney</groupId>
<artifactId>mjml-java-resolvers</artifactId>
</dependency>
</dependencies>

Gradle

dependencies {
implementation platform('dev.jcputney:mjml-java-bom:1.0.1')
implementation 'dev.jcputney:mjml-java-core'
implementation 'dev.jcputney:mjml-java-resolvers'
}

JPMS (Java Module System)

The core module is fully JPMS-ready. Add the following to your module-info.java:

module your.module {
requires dev.jcputney.mjml;
}

The dev.jcputney.mjml module requires java.xml and java.logging, which are included in all standard JDK distributions.

Exported Packages

The module exports the following packages:

PackageDescription
dev.jcputney.mjmlPublic API: MjmlRenderer, MjmlConfiguration, MjmlRenderResult
dev.jcputney.mjml.cssCSS inlining engine
dev.jcputney.mjml.componentComponent base classes and registry
dev.jcputney.mjml.contextRendering context and attribute resolution
dev.jcputney.mjml.parserMJML parser and preprocessor

Requirements

  • Java 17 or later
  • Core and Resolvers modules: zero external dependencies (JDK standard library only)
  • Spring module: Spring Boot 4.0+, optional Thymeleaf 3.1+