Chapter 04: Developing a Spring Boot Application: Difference between revisions
(One intermediate revision by the same user not shown) | |||
Line 183: | Line 183: | ||
Before diving into Gradle, let’s understand why we use build tools: | Before diving into Gradle, let’s understand why we use build tools: | ||
'''What Build Tools Do:''' | '''What Build Tools Do:''' | ||
* Dependency management | |||
* Compilation and packaging | |||
* Running tests | |||
* Code quality checks | |||
* Deployment preparation | |||
'''Popular Build Tools for JVM:''' | '''Popular Build Tools for JVM:''' | ||
* '''Gradle''': Modern, flexible, uses Groovy or Kotlin DSL | |||
* '''Maven''': Mature, XML-based, extensive plugin ecosystem | |||
* '''Bazel''': Google’s build tool, excellent for monorepos | |||
* '''SBT''': Scala-focused but works with Kotlin | |||
We use Gradle with Kotlin DSL because: | We use Gradle with Kotlin DSL because: | ||
# Type-safe build scripts | |||
# IDE auto-completion | |||
# Kotlin syntax consistency | |||
# Better refactoring support | |||
<span id="gradle"></span> | <span id="gradle"></span> | ||
=== 4.2.2 Gradle === | === 4.2.2 Gradle === | ||
Gradle is more than a build tool—it’s a build automation platform. Let’s understand its core concepts: | Gradle is more than a build tool—it’s a build automation platform. Let’s understand its core concepts: | ||
'''Gradle Concepts:''' | '''Gradle Concepts:''' | ||
* '''Project''': What you’re building (your application) | |||
* '''Task''': A unit of work (compile, test, jar) | |||
* '''Plugin''': Adds tasks and conventions | |||
* '''Dependency''': External libraries your project needs | |||
* '''Repository''': Where dependencies are downloaded from | |||
'''Gradle Wrapper:''' The wrapper ensures everyone uses the same Gradle version: | '''Gradle Wrapper:''' The wrapper ensures everyone uses the same Gradle version: | ||
Line 211: | Line 230: | ||
gradlew.bat build # Windows</syntaxhighlight> | gradlew.bat build # Windows</syntaxhighlight> | ||
<span id="managing-dependencies-using-kotlin-dsl"></span> | <span id="managing-dependencies-using-kotlin-dsl"></span> | ||
=== 4.2.3 Managing Dependencies Using Kotlin DSL === | === 4.2.3 Managing Dependencies Using Kotlin DSL === | ||