====== Java ====== ===== Gradle ===== ==== Initializing a Gradle project ==== $ mkdir TestGradle $ cd $_ $ gradle init --type java-application --dsl groovy Enter target Java version (min: 7, default: 21): Project name (default: TestGradle): Select application structure: 1: Single application project 2: Application and library project Enter selection (default: Single application project) [1..2] 1 Select test framework: 1: JUnit 4 2: TestNG 3: Spock 4: JUnit Jupiter Enter selection (default: JUnit Jupiter) [1..4] 1 Generate build using new APIs and behavior (some features may change in the next minor release)? (default: no) [yes, no] yes > Task :init To learn more about Gradle by exploring our Samples at https://docs.gradle.org/8.8/samples/sample_building_java_applications.html BUILD SUCCESSFUL in 8s 1 actionable task: 1 executed $ gradle build gradle run To pass arguments, use the "--args=" command line option like this: "gradle run --args='arg1 arg2 arg3'" ==== Spring Boot Console Application ==== // // app/build.gradle // plugins { id 'application' id "org.springframework.boot" version "3.3.5" id 'io.spring.dependency-management' version '1.1.6' } repositories { mavenCentral() } dependencies { implementation libs.guava implementation 'org.springframework.boot:spring-boot-starter' } java { toolchain { languageVersion = JavaLanguageVersion.of(21) } } application { mainClass = 'org.example.App' } // // app/src/main/java/org/example/App.java // package org.example; import org.springframework.boot.CommandLineRunner; import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; import java.util.logging.Logger; import org.springframework.stereotype.Component; import org.springframework.beans.factory.annotation.Autowired; @Component class MyComponent { public void doSomething() { System.out.println("Moo"); } } @SpringBootApplication public class App implements CommandLineRunner { private static Logger log = Logger.getLogger(App.class.getName()); @Autowired MyComponent myComponent; public static void main(String[] args) { SpringApplication.run(App.class, args); } @Override public void run(String... args) { log.info("Running."); myComponent.doSomething(); } } A Command Line Runner application can take advantage of auto-wiring by Spring. ==== Gradle Jobs with Different gradle-user-home ==== gradle -g $PWD build gradle -g $PWD run --args='something' This is to work around the "Timeout waiting to lock artifact cache" and "Starting a Gradle Daemon, 1 busy and 1 stopped Daemons could not be reused, use --status for details" (Also try "gradle --stop" and "gradle --status"). Setting the gradle-user-home creates the following subdirectories in the specific directory: caches, daemon, jdks, native, notification