Skip to content

Commit eab5cfd

Browse files
authored
plugin (#110)
1 parent e7f6da0 commit eab5cfd

File tree

9 files changed

+272
-34
lines changed

9 files changed

+272
-34
lines changed

docs/frameworks/graalvm.md

Lines changed: 8 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -36,7 +36,14 @@ Learn more about the basics of GraalVM native image compilation in the [GraalVM
3636
<TabItem value="gradle" label="Gradle" default>
3737

3838
```kotlin
39-
implementation("io.flamingock:flamingock-graalvm:$version")
39+
plugins {
40+
id("io.flamingock") version "$version"
41+
}
42+
43+
flamingock {
44+
community()
45+
graalvm()
46+
}
4047
```
4148

4249
</TabItem>

docs/frameworks/springboot-integration/builder-based-setup.md

Lines changed: 10 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -19,9 +19,18 @@ Add the Flamingock Spring Boot integration dependency:
1919

2020
<Tabs groupId="gradle_maven">
2121
<TabItem value="gradle" label="Gradle">
22+
2223
```kotlin
23-
implementation("io.flamingock:flamingock-springboot-integration:$version")
24+
plugins {
25+
id("io.flamingock") version "$version"
26+
}
27+
28+
flamingock {
29+
community()
30+
springboot()
31+
}
2432
```
33+
2534
</TabItem>
2635
<TabItem value="maven" label="Maven">
2736
```xml
@@ -34,10 +43,6 @@ implementation("io.flamingock:flamingock-springboot-integration:$version")
3443
</TabItem>
3544
</Tabs>
3645

37-
### Version compatibility
38-
39-
Check [Version compatibility](introduction.md#version-compatibility)
40-
4146
## Configure setup and build Flamingock manually
4247

4348
With the manual setup, you first need to configure Flamingock using `@EnableFlamingock` annotation with `setup = SetupType.BUILDER`, then manually configure and run Flamingock using the builder API.

docs/frameworks/springboot-integration/enable-flamingock-setup.md

Lines changed: 10 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -16,9 +16,18 @@ Add the Flamingock Spring Boot integration dependency:
1616

1717
<Tabs groupId="gradle_maven">
1818
<TabItem value="gradle" label="Gradle">
19+
1920
```kotlin
20-
implementation("io.flamingock:flamingock-springboot-integration:$version")
21+
plugins {
22+
id("io.flamingock") version "$version"
23+
}
24+
25+
flamingock {
26+
community()
27+
springboot()
28+
}
2129
```
30+
2231
</TabItem>
2332
<TabItem value="maven" label="Maven">
2433
```xml
@@ -31,10 +40,6 @@ implementation("io.flamingock:flamingock-springboot-integration:$version")
3140
</TabItem>
3241
</Tabs>
3342

34-
### Version compatibility
35-
36-
The `flamingock-springboot-integration` artifact is compatible with both Spring Boot 2.x and 3.x. See [Version compatibility](introduction.md#version-compatibility) for details.
37-
3843
## Configure setup and activate integration
3944

4045
To activate the integration, add `@EnableFlamingock` to any class in your application (commonly on your main class or a configuration class):

docs/frameworks/springboot-integration/introduction.md

Lines changed: 11 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -89,8 +89,17 @@ To use the Spring Boot integration, add the following dependency:
8989
<Tabs groupId="gradle_maven">
9090
<TabItem value="gradle" label="Gradle">
9191
```kotlin
92-
implementation("io.flamingock:flamingock-springboot-integration:$version")
92+
plugins {
93+
id("io.flamingock") version "$version"
94+
}
95+
96+
flamingock {
97+
community()
98+
springboot()
99+
}
93100
```
101+
102+
94103
</TabItem>
95104
<TabItem value="maven" label="Maven">
96105
```xml
@@ -103,13 +112,7 @@ implementation("io.flamingock:flamingock-springboot-integration:$version")
103112
</TabItem>
104113
</Tabs>
105114

106-
### Version compatibility
107-
108-
The `flamingock-springboot-integration` artifact is compatible with both Spring Boot 2.x and 3.x. Your project's Spring Boot version determines the appropriate Spring framework and JDK requirements.
109-
110-
| Package Name | Spring Boot Version |
111-
|-------------------------------------|----------------------|
112-
| `flamingock-springboot-integration` | 2.x and 3.x |
115+
Flamingock's Spring Boot integration is compatible with both Spring Boot 2.x and 3.x.
113116

114117

115118
## :white_check_mark: Best practices

docs/get-started/gradle-plugin.md

Lines changed: 211 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,211 @@
1+
---
2+
title: Gradle plugin
3+
sidebar_position: 25
4+
---
5+
6+
# Gradle plugin
7+
8+
The Flamingock Gradle Plugin provides zero-boilerplate dependency configuration for your Gradle projects. Instead of manually managing multiple dependencies, you configure Flamingock with a simple DSL.
9+
10+
## Why use the plugin?
11+
12+
Setting up Flamingock manually requires adding several dependencies:
13+
14+
```kotlin
15+
// Without the plugin - multiple dependencies to manage
16+
implementation(platform("io.flamingock:flamingock-community-bom:$version"))
17+
implementation("io.flamingock:flamingock-community")
18+
implementation("io.flamingock:flamingock-springboot-integration")
19+
testImplementation("io.flamingock:flamingock-springboot-test-support")
20+
annotationProcessor("io.flamingock:flamingock-processor:$version")
21+
```
22+
23+
With the plugin, this becomes:
24+
25+
```kotlin
26+
// With the plugin - simple DSL
27+
plugins {
28+
id("io.flamingock") version "$version"
29+
}
30+
31+
flamingock {
32+
community()
33+
springboot()
34+
}
35+
```
36+
37+
The plugin automatically adds the correct dependencies, annotation processors, and BOMs based on your configuration.
38+
39+
40+
## Requirements
41+
42+
- **Gradle** 7.4+
43+
- **Java** 8+
44+
45+
46+
## Quick start
47+
48+
Add the plugin to your `build.gradle.kts`:
49+
50+
```kotlin
51+
plugins {
52+
id("io.flamingock") version "$version"
53+
}
54+
55+
flamingock {
56+
community()
57+
}
58+
```
59+
60+
Or in `build.gradle` (Groovy):
61+
62+
```groovy
63+
plugins {
64+
id 'io.flamingock' version '$version'
65+
}
66+
67+
flamingock {
68+
community()
69+
}
70+
```
71+
72+
73+
## Configuration options
74+
75+
| Method | Description |
76+
|--------|-------------|
77+
| `community()` | Enables Community edition (adds BOM and core library) |
78+
| `springboot()` | Adds Spring Boot integration and test support |
79+
| `graalvm()` | Adds GraalVM native image support |
80+
| `mongock()` | Enables seamless migration from Mongock — imports audit log, detects legacy change units, and executes pending ones |
81+
82+
83+
## What gets added
84+
85+
The plugin automatically adds dependencies based on your configuration:
86+
87+
### Always added
88+
89+
```kotlin
90+
annotationProcessor("io.flamingock:flamingock-processor:$version")
91+
```
92+
93+
### community()
94+
95+
```kotlin
96+
implementation(platform("io.flamingock:flamingock-community-bom:$version"))
97+
implementation("io.flamingock:flamingock-community")
98+
```
99+
100+
### springboot()
101+
102+
```kotlin
103+
implementation("io.flamingock:flamingock-springboot-integration")
104+
testImplementation("io.flamingock:flamingock-springboot-test-support")
105+
```
106+
107+
### graalvm()
108+
109+
```kotlin
110+
implementation("io.flamingock:flamingock-graalvm")
111+
```
112+
113+
### mongock()
114+
115+
```kotlin
116+
implementation("io.flamingock:mongock-support")
117+
annotationProcessor("io.flamingock:mongock-support")
118+
```
119+
120+
121+
## Examples
122+
123+
### Basic standalone application
124+
125+
```kotlin
126+
plugins {
127+
java
128+
id("io.flamingock") version "$version"
129+
}
130+
131+
flamingock {
132+
community()
133+
}
134+
135+
dependencies {
136+
// Your audit store
137+
implementation("io.flamingock:flamingock-auditstore-mongodb-sync")
138+
139+
// Your drivers
140+
implementation("org.mongodb:mongodb-driver-sync:5.0.0")
141+
}
142+
```
143+
144+
### Spring Boot application
145+
146+
```kotlin
147+
plugins {
148+
java
149+
id("org.springframework.boot") version "3.2.0"
150+
id("io.spring.dependency-management") version "1.1.4"
151+
id("io.flamingock") version "$version"
152+
}
153+
154+
flamingock {
155+
community()
156+
springboot()
157+
}
158+
159+
dependencies {
160+
// Your audit store
161+
implementation("io.flamingock:flamingock-auditstore-mongodb-sync")
162+
163+
// Your drivers
164+
implementation("org.mongodb:mongodb-driver-sync:5.0.0")
165+
}
166+
```
167+
168+
### Migrating from Mongock
169+
170+
```kotlin
171+
plugins {
172+
java
173+
id("io.flamingock") version "$version"
174+
}
175+
176+
flamingock {
177+
community()
178+
springboot()
179+
mongock() // Adds Mongock migration support
180+
}
181+
```
182+
183+
### With GraalVM native image
184+
185+
```kotlin
186+
plugins {
187+
java
188+
id("org.graalvm.buildtools.native") version "0.9.28"
189+
id("io.flamingock") version "$version"
190+
}
191+
192+
flamingock {
193+
community()
194+
graalvm() // Adds GraalVM support
195+
}
196+
```
197+
198+
199+
## Alternative: Manual dependencies
200+
201+
If you prefer to manage dependencies manually, or if you're using Maven, see the dependency sections in each feature's documentation:
202+
203+
- [Quick start](./quick-start.md) - Core Flamingock dependencies
204+
- [Spring Boot integration](../frameworks/springboot-integration/introduction.md) - Spring Boot dependencies
205+
- [Coming from Mongock](../resources/coming-from-mongock.md) - Mongock migration dependencies
206+
207+
208+
## Links
209+
210+
- [Gradle Plugin Portal](https://plugins.gradle.org/plugin/io.flamingock)
211+
- [Plugin source code](https://github.com/flamingock/flamingock-gradle-plugin)

docs/get-started/quick-start.md

Lines changed: 7 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
---
2-
sidebar_position: 20
2+
sidebar_position: 15
33
---
44
import Tabs from '@theme/Tabs';
55
import TabItem from '@theme/TabItem';
@@ -24,12 +24,14 @@ Add Flamingock to your build:
2424

2525
<Tabs groupId="gradle_maven">
2626
<TabItem value="gradle" label="Gradle" default>
27-
2827
```kotlin
29-
implementation(platform("io.flamingock:flamingock-community-bom:$version"))
30-
implementation("io.flamingock:flamingock-community")
28+
plugins {
29+
id("io.flamingock") version "$version"
30+
}
3131

32-
annotationProcessor("io.flamingock:flamingock-processor:$version")
32+
flamingock {
33+
community()
34+
}
3335
```
3436

3537
</TabItem>

docs/resources/coming-from-mongock.md

Lines changed: 9 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -30,29 +30,31 @@ Migrating from Mongock is intentionally simple, it only requires two additional
3030

3131
### 1. Add Mongock Support dependency
3232

33-
34-
35-
3633
<Tabs groupId="gradle_maven">
3734
<TabItem value="gradle" label="Gradle" default>
35+
3836
```kotlin
39-
annotationProcessor("io.flamingock:mongock-support:$version")
40-
implementation("io.flamingock:mongock-support:$version")
37+
plugins {
38+
id("io.flamingock") version "$version"
39+
}
40+
41+
flamingock {
42+
community()
43+
mongock() // Adds Mongock migration support
44+
}
4145
```
4246

4347
</TabItem>
4448
<TabItem value="maven" label="Maven">
4549

4650
```xml
47-
4851
<dependency>
4952
<groupId>io.flamingock</groupId>
5053
<artifactId>mongock-support</artifactId>
5154
<version>${flamingock.version}</version>
5255
</dependency>
5356

5457
<!-- Annotation processor -->
55-
5658
<build>
5759
<plugins>
5860
<plugin>
@@ -71,7 +73,6 @@ implementation("io.flamingock:mongock-support:$version")
7173
</plugin>
7274
</plugins>
7375
</build>
74-
7576
```
7677

7778
</TabItem>

0 commit comments

Comments
 (0)