# Java Project Requirements * Compile Java classes from .java into .class file. * Manage resources that live alongside code. * Package everything into a jar file. * Run tests. * Define decencies. # Gradle Java Plugin Plugin adds support for Java to meet all the specified requirements listed above. It configures projects in a certain way & adds additional tasks. ``` plugins { java } ``` ## Compiling Classes * Java plugin adds a compileJava task that uses the Java installed int he system to compile .java into .class files. * Output .class files are outputted to build directory. * `./gradlew compileJava` ![[gradle-compile-output-location.png]] ## Managing Resources * Java plugin adds processResources task that copies contents of resources directories into build directory. * `./gradlew processResources` ![[gradle-resources-output-location.png]] ## Package Into Jar File * Java plugin adds a jar task that packages compiled classes and resources into a jar file. * The name of the jar file is `<project-name>-<version>.jar` * `./gradlew jar` ![[gradle-jar-output-location.png]] ## Running Tests * Java plugin adds a test task that compiles tests, processes resources, and runs tests. * Creates a test report in the build directory. * `./gradlew test` ## Define Dependencies * Use the dependencies section of `build.gradle.kts` * Dependencies can be defined in different configurations. Therefore, it is important to set the right configuration because it is used to generate the `classpath`. The `classpath` is used by java so it knows about all the classes required during code compilation and execution. * `implementation` is for dependencies required during compilation and execution of the code. * `testImplementation` is for dependencies required during compilation and execution of tests. ![[project-dependencies-showcase.png]] # Gradle Project Layout ![[gradle-project layout.png]]