mirror of
https://github.com/ethauvin/rife2-hello.git
synced 2025-04-26 07:47:13 -07:00
Added support for configurable precompiled template types
This commit is contained in:
parent
ed8046e83d
commit
aeaadfb1cc
5 changed files with 66 additions and 32 deletions
|
@ -1,5 +1,6 @@
|
||||||
import org.gradle.api.tasks.testing.logging.TestExceptionFormat
|
import org.gradle.api.tasks.testing.logging.TestExceptionFormat
|
||||||
import org.gradle.api.tasks.testing.logging.TestLogEvent
|
import org.gradle.api.tasks.testing.logging.TestLogEvent
|
||||||
|
import com.uwyn.rife2.gradle.TemplateType.*
|
||||||
|
|
||||||
plugins {
|
plugins {
|
||||||
id("com.uwyn.rife2")
|
id("com.uwyn.rife2")
|
||||||
|
@ -29,6 +30,7 @@ rife2 {
|
||||||
mainClass.set("hello.App")
|
mainClass.set("hello.App")
|
||||||
version.set("1.4.0")
|
version.set("1.4.0")
|
||||||
useAgent.set(true)
|
useAgent.set(true)
|
||||||
|
precompiledTemplateTypes.addAll(HTML)
|
||||||
}
|
}
|
||||||
|
|
||||||
dependencies {
|
dependencies {
|
||||||
|
|
|
@ -18,6 +18,7 @@ package com.uwyn.rife2.gradle;
|
||||||
import org.gradle.api.DefaultTask;
|
import org.gradle.api.DefaultTask;
|
||||||
import org.gradle.api.file.ConfigurableFileCollection;
|
import org.gradle.api.file.ConfigurableFileCollection;
|
||||||
import org.gradle.api.file.DirectoryProperty;
|
import org.gradle.api.file.DirectoryProperty;
|
||||||
|
import org.gradle.api.provider.ListProperty;
|
||||||
import org.gradle.api.provider.Property;
|
import org.gradle.api.provider.Property;
|
||||||
import org.gradle.api.tasks.CacheableTask;
|
import org.gradle.api.tasks.CacheableTask;
|
||||||
import org.gradle.api.tasks.Classpath;
|
import org.gradle.api.tasks.Classpath;
|
||||||
|
@ -45,7 +46,7 @@ public abstract class PrecompileTemplates extends DefaultTask {
|
||||||
public abstract DirectoryProperty getTemplatesDirectory();
|
public abstract DirectoryProperty getTemplatesDirectory();
|
||||||
|
|
||||||
@Input
|
@Input
|
||||||
public abstract Property<String> getType();
|
public abstract ListProperty<TemplateType> getTypes();
|
||||||
|
|
||||||
@Input
|
@Input
|
||||||
@Optional
|
@Optional
|
||||||
|
@ -63,6 +64,7 @@ public abstract class PrecompileTemplates extends DefaultTask {
|
||||||
|
|
||||||
@TaskAction
|
@TaskAction
|
||||||
public void precompileTemplates() {
|
public void precompileTemplates() {
|
||||||
|
for (var type : getTypes().get()) {
|
||||||
getExecOperations().javaexec(javaexec -> {
|
getExecOperations().javaexec(javaexec -> {
|
||||||
javaexec.setClasspath(getClasspath());
|
javaexec.setClasspath(getClasspath());
|
||||||
javaexec.getMainClass().set("rife.template.TemplateDeployer");
|
javaexec.getMainClass().set("rife.template.TemplateDeployer");
|
||||||
|
@ -71,7 +73,7 @@ public abstract class PrecompileTemplates extends DefaultTask {
|
||||||
args.add("-verbose");
|
args.add("-verbose");
|
||||||
}
|
}
|
||||||
args.add("-t");
|
args.add("-t");
|
||||||
args.add(getType().get());
|
args.add(type.identifier());
|
||||||
args.add("-d");
|
args.add("-d");
|
||||||
args.add(getOutputDirectory().get().getAsFile().getPath());
|
args.add(getOutputDirectory().get().getAsFile().getPath());
|
||||||
args.add("-encoding");
|
args.add("-encoding");
|
||||||
|
@ -80,4 +82,5 @@ public abstract class PrecompileTemplates extends DefaultTask {
|
||||||
javaexec.args(args);
|
javaexec.args(args);
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -15,6 +15,7 @@
|
||||||
*/
|
*/
|
||||||
package com.uwyn.rife2.gradle;
|
package com.uwyn.rife2.gradle;
|
||||||
|
|
||||||
|
import org.gradle.api.provider.ListProperty;
|
||||||
import org.gradle.api.provider.Property;
|
import org.gradle.api.provider.Property;
|
||||||
|
|
||||||
@SuppressWarnings("unused")
|
@SuppressWarnings("unused")
|
||||||
|
@ -26,4 +27,6 @@ public abstract class Rife2Extension {
|
||||||
public abstract Property<Boolean> getUseAgent();
|
public abstract Property<Boolean> getUseAgent();
|
||||||
|
|
||||||
public abstract Property<String> getUberMainClass();
|
public abstract Property<String> getUberMainClass();
|
||||||
|
|
||||||
|
public abstract ListProperty<TemplateType> getPrecompiledTemplateTypes();
|
||||||
}
|
}
|
||||||
|
|
|
@ -20,7 +20,6 @@ import org.gradle.api.artifacts.Configuration;
|
||||||
import org.gradle.api.artifacts.ConfigurationContainer;
|
import org.gradle.api.artifacts.ConfigurationContainer;
|
||||||
import org.gradle.api.artifacts.dsl.DependencyHandler;
|
import org.gradle.api.artifacts.dsl.DependencyHandler;
|
||||||
import org.gradle.api.attributes.Attribute;
|
import org.gradle.api.attributes.Attribute;
|
||||||
import org.gradle.api.attributes.AttributeContainer;
|
|
||||||
import org.gradle.api.attributes.Bundling;
|
import org.gradle.api.attributes.Bundling;
|
||||||
import org.gradle.api.component.AdhocComponentWithVariants;
|
import org.gradle.api.component.AdhocComponentWithVariants;
|
||||||
import org.gradle.api.component.ConfigurationVariantDetails;
|
import org.gradle.api.component.ConfigurationVariantDetails;
|
||||||
|
@ -53,17 +52,21 @@ public class Rife2Plugin implements Plugin<Project> {
|
||||||
var configurations = project.getConfigurations();
|
var configurations = project.getConfigurations();
|
||||||
var dependencyHandler = project.getDependencies();
|
var dependencyHandler = project.getDependencies();
|
||||||
var tasks = project.getTasks();
|
var tasks = project.getTasks();
|
||||||
|
|
||||||
var rife2Configuration = createRife2Configuration(configurations, dependencyHandler, rife2Extension);
|
var rife2Configuration = createRife2Configuration(configurations, dependencyHandler, rife2Extension);
|
||||||
var rife2CompilerClasspath = createRife2CompilerClasspathConfiguration(configurations, rife2Configuration);
|
var rife2CompilerClasspath = createRife2CompilerClasspathConfiguration(configurations, rife2Configuration);
|
||||||
var rife2AgentClasspath = createRife2AgentConfiguration(configurations, dependencyHandler, rife2Extension);
|
var rife2AgentClasspath = createRife2AgentConfiguration(configurations, dependencyHandler, rife2Extension);
|
||||||
configurations.getByName(JavaPlugin.IMPLEMENTATION_CONFIGURATION_NAME).extendsFrom(rife2Configuration);
|
configurations.getByName(JavaPlugin.IMPLEMENTATION_CONFIGURATION_NAME).extendsFrom(rife2Configuration);
|
||||||
var precompileHtmlTemplates = registerPrecompileHtmlTemplateTask(project, rife2CompilerClasspath);
|
|
||||||
createRife2DevelopmentOnlyConfiguration(project, configurations, dependencyHandler, precompileHtmlTemplates);
|
var precompileTemplates = registerPrecompileTemplateTask(project, rife2CompilerClasspath, rife2Extension);
|
||||||
exposePrecompiledTemplatesToTestTask(project, configurations, dependencyHandler, precompileHtmlTemplates);
|
createRife2DevelopmentOnlyConfiguration(project, configurations, dependencyHandler, precompileTemplates);
|
||||||
|
exposePrecompiledTemplatesToTestTask(project, configurations, dependencyHandler, precompileTemplates);
|
||||||
configureAgent(project, plugins, rife2Extension, rife2AgentClasspath);
|
configureAgent(project, plugins, rife2Extension, rife2AgentClasspath);
|
||||||
registerRunTask(project, rife2Extension, rife2AgentClasspath);
|
registerRunTask(project, rife2Extension, rife2AgentClasspath);
|
||||||
var uberJarTask = registerUberJarTask(project, plugins, javaPluginExtension, rife2Extension, tasks, precompileHtmlTemplates);
|
var uberJarTask = registerUberJarTask(project, plugins, javaPluginExtension, rife2Extension, tasks, precompileTemplates);
|
||||||
bundlePrecompiledTemplatesIntoJarFile(tasks, precompileHtmlTemplates);
|
|
||||||
|
bundlePrecompiledTemplatesIntoJarFile(tasks, precompileTemplates);
|
||||||
|
|
||||||
configureMavenPublishing(project, plugins, configurations, uberJarTask);
|
configureMavenPublishing(project, plugins, configurations, uberJarTask);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -103,15 +106,15 @@ public class Rife2Plugin implements Plugin<Project> {
|
||||||
private static void exposePrecompiledTemplatesToTestTask(Project project,
|
private static void exposePrecompiledTemplatesToTestTask(Project project,
|
||||||
ConfigurationContainer configurations,
|
ConfigurationContainer configurations,
|
||||||
DependencyHandler dependencyHandler,
|
DependencyHandler dependencyHandler,
|
||||||
TaskProvider<PrecompileTemplates> precompileTemplates) {
|
TaskProvider<PrecompileTemplates> precompileTemplatesTask) {
|
||||||
configurations.getByName(JavaPlugin.TEST_RUNTIME_ONLY_CONFIGURATION_NAME)
|
configurations.getByName(JavaPlugin.TEST_RUNTIME_ONLY_CONFIGURATION_NAME)
|
||||||
.getDependencies()
|
.getDependencies()
|
||||||
.add(dependencyHandler.create(project.files(precompileTemplates)));
|
.add(dependencyHandler.create(project.files(precompileTemplatesTask)));
|
||||||
}
|
}
|
||||||
|
|
||||||
private static void bundlePrecompiledTemplatesIntoJarFile(TaskContainer tasks,
|
private static void bundlePrecompiledTemplatesIntoJarFile(TaskContainer tasks,
|
||||||
TaskProvider<PrecompileTemplates> precompileTemplates) {
|
TaskProvider<PrecompileTemplates> precompileTemplatesTask) {
|
||||||
tasks.named("jar", Jar.class, jar -> jar.from(precompileTemplates));
|
tasks.named("jar", Jar.class, jar -> jar.from(precompileTemplatesTask));
|
||||||
}
|
}
|
||||||
|
|
||||||
private void createRife2DevelopmentOnlyConfiguration(Project project,
|
private void createRife2DevelopmentOnlyConfiguration(Project project,
|
||||||
|
@ -210,14 +213,15 @@ public class Rife2Plugin implements Plugin<Project> {
|
||||||
return config;
|
return config;
|
||||||
}
|
}
|
||||||
|
|
||||||
private static TaskProvider<PrecompileTemplates> registerPrecompileHtmlTemplateTask(Project project,
|
private static TaskProvider<PrecompileTemplates> registerPrecompileTemplateTask(Project project,
|
||||||
Configuration rife2CompilerClasspath) {
|
Configuration rife2CompilerClasspath,
|
||||||
return project.getTasks().register("precompileHtmlTemplates", PrecompileTemplates.class, task -> {
|
Rife2Extension rife2Extension) {
|
||||||
|
return project.getTasks().register("precompileTemplates", PrecompileTemplates.class, task -> {
|
||||||
task.setGroup(RIFE2_GROUP);
|
task.setGroup(RIFE2_GROUP);
|
||||||
task.setDescription("Pre-compiles the HTML templates.");
|
task.setDescription("Pre-compiles the templates.");
|
||||||
task.getVerbose().convention(true);
|
task.getVerbose().convention(true);
|
||||||
task.getClasspath().from(rife2CompilerClasspath);
|
task.getClasspath().from(rife2CompilerClasspath);
|
||||||
task.getType().convention("html");
|
task.getTypes().convention(rife2Extension.getPrecompiledTemplateTypes());
|
||||||
task.getTemplatesDirectory().set(project.getLayout().getProjectDirectory().dir(DEFAULT_TEMPLATES_DIR));
|
task.getTemplatesDirectory().set(project.getLayout().getProjectDirectory().dir(DEFAULT_TEMPLATES_DIR));
|
||||||
task.getOutputDirectory().set(project.getLayout().getBuildDirectory().dir(DEFAULT_GENERATED_RIFE2_CLASSES_DIR));
|
task.getOutputDirectory().set(project.getLayout().getBuildDirectory().dir(DEFAULT_GENERATED_RIFE2_CLASSES_DIR));
|
||||||
});
|
});
|
||||||
|
|
|
@ -0,0 +1,22 @@
|
||||||
|
package com.uwyn.rife2.gradle;
|
||||||
|
|
||||||
|
import java.io.Serializable;
|
||||||
|
|
||||||
|
public class TemplateType implements Serializable {
|
||||||
|
public static TemplateType HTML = new TemplateType("html");
|
||||||
|
public static TemplateType JSON = new TemplateType("json");
|
||||||
|
public static TemplateType SVG = new TemplateType("svg");
|
||||||
|
public static TemplateType XML = new TemplateType("xml");
|
||||||
|
public static TemplateType TXT = new TemplateType("txt");
|
||||||
|
public static TemplateType SQL = new TemplateType("sql");
|
||||||
|
|
||||||
|
private final String identifier_;
|
||||||
|
|
||||||
|
public TemplateType(String identifier) {
|
||||||
|
identifier_ = identifier;
|
||||||
|
}
|
||||||
|
|
||||||
|
public String identifier() {
|
||||||
|
return identifier_;
|
||||||
|
}
|
||||||
|
}
|
Loading…
Add table
Add a link
Reference in a new issue