id = "java" name = "Java" group = "Java" icon = "project-java" description = "A plain Java application built with Maven or Gradle." [[fields]] id = "build" label = "Build system:" type = "choice" segmented = true options = [{ value = "maven", label = "Maven" }, { value = "gradle", label = "Gradle" }] default = "maven" [[fields]] id = "jdk" label = "JDK:" type = "sdk" sdk = "jdk" [[fields]] id = "release" label = "Java version:" type = "choice" options = ["25", "21", "17", "11"] default = "21" [[fields]] id = "group" label = "Group:" type = "text" pattern = '^[A-Za-z_][\w]*(\.[A-Za-z_][\w]*)*$' default = "com.example" [[fields]] id = "artifact" label = "Artifact:" type = "text" pattern = '^[A-Za-z0-9_.-]+$' default = "{{name|kebab}}" [[fields]] id = "package" label = "Package:" type = "text" pattern = '^[A-Za-z_][\w]*(\.[A-Za-z_][\w]*)*$' default = "{{group}}.{{artifact|ident}}" [[fields]] id = "sample" label = "Add sample code" type = "checkbox" default = "true" [[files]] path = "pom.xml" when = { build = "maven" } content = ''' 4.0.0 {{group}} {{artifact}} 1.0-SNAPSHOT {{release}} UTF-8 org.junit.jupiter junit-jupiter 5.13.4 test org.apache.maven.plugins maven-surefire-plugin 3.5.4 ''' [[files]] path = "settings.gradle.kts" when = { build = "gradle" } content = ''' rootProject.name = "{{artifact}}" ''' [[files]] path = "build.gradle.kts" when = { build = "gradle" } content = ''' plugins { application } group = "{{group}}" version = "1.0-SNAPSHOT" repositories { mavenCentral() } dependencies { testImplementation(platform("org.junit:junit-bom:5.13.4")) testImplementation("org.junit.jupiter:junit-jupiter") testRuntimeOnly("org.junit.platform:junit-platform-launcher") } tasks.withType { options.release = {{release}} options.encoding = "UTF-8" } application { mainClass = "{{package}}.Main" } tasks.test { useJUnitPlatform() } ''' [[files]] path = "src/main/java/{{package|path}}/Main.java" when = { sample = "true" } content = ''' package {{package}}; public class Main { public static void main(String[] args) { System.out.println("Hello, World!"); } } ''' [[files]] path = ".gitignore" content = ''' target/ build/ .gradle/ *.class .idea/ ''' [[after]] label = "Generating the Gradle wrapper" program = "gradle" args = ["wrapper", "--no-daemon", "-q"] when = { build = "gradle" } env = { JAVA_HOME = "{{jdk}}" } optional = true [settings.java] jdk = "{{jdk}}"