
mkdir java-terraform
cd java-terraform
nano main.tf
Paste the following content:
terraform {
required_providers {
local = {
source = "hashicorp/local"
}
}
}
provider "local" {}
# 1. Create a folder for Java project
resource "null_resource" "create_folder" {
provisioner "local-exec" {
command = "mkdir -p myjava"
}
}
# 2. Create the Java file
resource "local_file" "java_program" {
depends_on = [null_resource.create_folder]
filename = "${path.module}/myjava/Hello.java"
content = <<-EOF
public class Hello {
public static void main(String[] args) {
System.out.println("Hello from Terraform + Java!");
}
}
EOF
}
# 3. Compile the Java code
resource "null_resource" "compile_java" {
depends_on = [local_file.java_program]
provisioner "local-exec" {
command = "javac myjava/Hello.java"
}
}
# 4. Run the Java program
resource "null_resource" "run_java" {
depends_on = [null_resource.compile_java]
provisioner "local-exec" {
command = "java -cp myjava Hello"
}
}
terraform init
This downloads any provider plugin (local provider) and prepares the working directory.
terraform validate
Ensures your HCL is syntactically valid.
terraform apply -auto-approve
Terraform will:
null_resource.run_java (local-exec): Hello from Terraform + Java!
Apply complete! Resources: 4 added, 0 changed, 0 destroyed.











