diff --git a/gradle-twirl/src/main/java/play/twirl/gradle/TwirlCompile.java b/gradle-twirl/src/main/java/play/twirl/gradle/TwirlCompile.java
index 71eff915..ed38d79c 100644
--- a/gradle-twirl/src/main/java/play/twirl/gradle/TwirlCompile.java
+++ b/gradle-twirl/src/main/java/play/twirl/gradle/TwirlCompile.java
@@ -26,6 +26,7 @@
import org.gradle.workers.WorkerExecutor;
import play.twirl.gradle.internal.TwirlCompileAction;
+/** Gradle task for compiling Twirl templates into Scala code. */
public abstract class TwirlCompile extends SourceTask {
@InputFiles
diff --git a/gradle-twirl/src/main/java/play/twirl/gradle/TwirlExtension.java b/gradle-twirl/src/main/java/play/twirl/gradle/TwirlExtension.java
index a4728193..77de6893 100644
--- a/gradle-twirl/src/main/java/play/twirl/gradle/TwirlExtension.java
+++ b/gradle-twirl/src/main/java/play/twirl/gradle/TwirlExtension.java
@@ -5,7 +5,20 @@
import org.gradle.api.provider.Property;
+/**
+ * The extension of the plugin allowing for configuring the target Scala version used for the
+ * application.
+ */
public abstract class TwirlExtension {
+ /**
+ * Scala version used for compilation Twirl templates.
+ *
+ *
{@code
+ * twirl {
+ * scalaVersion.set("3")
+ * }
+ * }
+ */
public abstract Property getScalaVersion();
}
diff --git a/gradle-twirl/src/main/java/play/twirl/gradle/TwirlPlugin.java b/gradle-twirl/src/main/java/play/twirl/gradle/TwirlPlugin.java
index 96b5befe..5e7215f6 100644
--- a/gradle-twirl/src/main/java/play/twirl/gradle/TwirlPlugin.java
+++ b/gradle-twirl/src/main/java/play/twirl/gradle/TwirlPlugin.java
@@ -23,7 +23,7 @@
import play.twirl.gradle.internal.DefaultTwirlSourceDirectorySet;
import play.twirl.gradle.internal.Gradle7TwirlSourceDirectorySet;
-/** A simple 'hello world' plugin. */
+/** A Gradle plugin to compile Twirl templates. */
public class TwirlPlugin implements Plugin {
static final String DEFAULT_SCALA_VERSION = "2.13";
@@ -58,7 +58,7 @@ public void apply(final Project project) {
configureSourceSetDefaults(project, twirlConfiguration);
}
- /** Get Twirl version from Gradle Plugin MANIFEST.MF */
+ /** Get Twirl compiler version from Gradle Plugin MANIFEST.MF */
private String getDefaultTwirlVersion() {
return System.getProperty("twirl.version", getClass().getPackage().getImplementationVersion());
}
@@ -140,25 +140,24 @@ private TaskProvider createTwirlCompileTask(
});
}
+ @SuppressWarnings("deprecation")
private TwirlSourceDirectorySet getTwirlSourceDirectorySet(SourceSet sourceSet) {
String displayName = ((DefaultSourceSet) sourceSet).getDisplayName();
- TwirlSourceDirectorySet twirlSourceDirectorySet;
- if (GradleVersion.current().compareTo(GradleVersion.version("8.0")) < 0) { // Gradle < 8.0
- twirlSourceDirectorySet =
- objectFactory.newInstance(
- Gradle7TwirlSourceDirectorySet.class,
- objectFactory.sourceDirectorySet("twirl", displayName + " Twirl source"));
- } else { // Gradle 8+
- twirlSourceDirectorySet =
- objectFactory.newInstance(
- DefaultTwirlSourceDirectorySet.class,
- objectFactory.sourceDirectorySet("twirl", displayName + " Twirl source"));
- }
+ TwirlSourceDirectorySet twirlSourceDirectorySet =
+ objectFactory.newInstance(
+ isGradleVersionLessThan("8.0")
+ ? Gradle7TwirlSourceDirectorySet.class
+ : DefaultTwirlSourceDirectorySet.class,
+ objectFactory.sourceDirectorySet("twirl", displayName + " Twirl source"));
twirlSourceDirectorySet.getFilter().include("**/*.scala.*");
twirlSourceDirectorySet.getTemplateFormats().convention(DEFAULT_TEMPLATE_FORMATS);
return twirlSourceDirectorySet;
}
+ static boolean isGradleVersionLessThan(String gradleVersion) {
+ return GradleVersion.current().compareTo(GradleVersion.version(gradleVersion)) < 0;
+ }
+
static JavaPluginExtension javaPluginExtension(Project project) {
return extensionOf(project, JavaPluginExtension.class);
}
diff --git a/gradle-twirl/src/main/java/play/twirl/gradle/TwirlSourceDirectorySet.java b/gradle-twirl/src/main/java/play/twirl/gradle/TwirlSourceDirectorySet.java
index b767bd98..b7959f48 100644
--- a/gradle-twirl/src/main/java/play/twirl/gradle/TwirlSourceDirectorySet.java
+++ b/gradle-twirl/src/main/java/play/twirl/gradle/TwirlSourceDirectorySet.java
@@ -15,11 +15,63 @@
*/
public interface TwirlSourceDirectorySet extends SourceDirectorySet {
+ /**
+ * Custom template formats configured for this source directory set.
+ *
+ * {@code
+ * sourceSets {
+ * main {
+ * twirl {
+ * templateFormats.put("csv", "play.twirl.api.TxtFormat")
+ * }
+ * }
+ * }
+ * }
+ */
MapProperty getTemplateFormats();
+ /**
+ * Imports that should be added to generated source files.
+ *
+ * {@code
+ * sourceSets {
+ * main {
+ * twirl {
+ * templateImports.add("org.example._")
+ * }
+ * }
+ * }
+ * }
+ */
SetProperty getTemplateImports();
+ /**
+ * Annotations added to constructors in injectable templates.
+ *
+ * {@code
+ * sourceSets {
+ * main {
+ * twirl {
+ * constructorAnnotations.add("@org.example.MyAnnotation()")
+ * }
+ * }
+ * }
+ * }
+ */
ListProperty getConstructorAnnotations();
+ /**
+ * Source encoding for template files and generated scala files.
+ *
+ * {@code
+ * sourceSets {
+ * main {
+ * twirl {
+ * sourceEncoding.set("")
+ * }
+ * }
+ * }
+ * }
+ */
Property getSourceEncoding();
}
diff --git a/gradle-twirl/src/main/java/play/twirl/gradle/internal/DefaultTwirlSourceDirectorySet.java b/gradle-twirl/src/main/java/play/twirl/gradle/internal/DefaultTwirlSourceDirectorySet.java
index 553a7145..3b775e23 100644
--- a/gradle-twirl/src/main/java/play/twirl/gradle/internal/DefaultTwirlSourceDirectorySet.java
+++ b/gradle-twirl/src/main/java/play/twirl/gradle/internal/DefaultTwirlSourceDirectorySet.java
@@ -16,6 +16,7 @@
import org.gradle.api.provider.SetProperty;
import play.twirl.gradle.TwirlSourceDirectorySet;
+/** Default implementation of {@link TwirlSourceDirectorySet}. */
public class DefaultTwirlSourceDirectorySet extends DefaultSourceDirectorySet
implements TwirlSourceDirectorySet {
diff --git a/gradle-twirl/src/main/java/play/twirl/gradle/internal/Gradle7TwirlSourceDirectorySet.java b/gradle-twirl/src/main/java/play/twirl/gradle/internal/Gradle7TwirlSourceDirectorySet.java
index f79330e6..8bb083d8 100644
--- a/gradle-twirl/src/main/java/play/twirl/gradle/internal/Gradle7TwirlSourceDirectorySet.java
+++ b/gradle-twirl/src/main/java/play/twirl/gradle/internal/Gradle7TwirlSourceDirectorySet.java
@@ -6,8 +6,15 @@
import javax.inject.Inject;
import org.gradle.api.file.SourceDirectorySet;
import org.gradle.api.model.ObjectFactory;
+import play.twirl.gradle.TwirlSourceDirectorySet;
+/**
+ * Implementation of {@link TwirlSourceDirectorySet} is needed to support Gradle 7.
+ *
+ * @deprecated
+ */
@Deprecated
+@SuppressWarnings("DeprecatedIsStillUsed")
public class Gradle7TwirlSourceDirectorySet extends DefaultTwirlSourceDirectorySet {
@Inject
diff --git a/gradle-twirl/src/main/java/play/twirl/gradle/internal/TwirlCompileAction.java b/gradle-twirl/src/main/java/play/twirl/gradle/internal/TwirlCompileAction.java
index 7ba573ea..1fd642fe 100644
--- a/gradle-twirl/src/main/java/play/twirl/gradle/internal/TwirlCompileAction.java
+++ b/gradle-twirl/src/main/java/play/twirl/gradle/internal/TwirlCompileAction.java
@@ -12,6 +12,7 @@
import play.japi.twirl.compiler.TwirlCompiler;
import scala.io.Codec;
+/** Gradle work action that compile one Twirl template. */
public abstract class TwirlCompileAction implements WorkAction {
private static final Logger LOGGER = Logging.getLogger(TwirlCompileAction.class);
diff --git a/gradle-twirl/src/main/java/play/twirl/gradle/internal/TwirlCompileParams.java b/gradle-twirl/src/main/java/play/twirl/gradle/internal/TwirlCompileParams.java
index a3b1b973..d52911a5 100644
--- a/gradle-twirl/src/main/java/play/twirl/gradle/internal/TwirlCompileParams.java
+++ b/gradle-twirl/src/main/java/play/twirl/gradle/internal/TwirlCompileParams.java
@@ -10,6 +10,7 @@
import org.gradle.api.provider.SetProperty;
import org.gradle.workers.WorkParameters;
+/** Parameters of compilation work action. */
public interface TwirlCompileParams extends WorkParameters {
RegularFileProperty getSourceFile();