diff --git a/2024/09/plugin_demo1/plugin_demo1/.gitignore b/2024/09/plugin_demo1/plugin_demo1/.gitignore
new file mode 100644
index 0000000..5ff6309
--- /dev/null
+++ b/2024/09/plugin_demo1/plugin_demo1/.gitignore
@@ -0,0 +1,38 @@
+target/
+!.mvn/wrapper/maven-wrapper.jar
+!**/src/main/**/target/
+!**/src/test/**/target/
+
+### IntelliJ IDEA ###
+.idea/modules.xml
+.idea/jarRepositories.xml
+.idea/compiler.xml
+.idea/libraries/
+*.iws
+*.iml
+*.ipr
+
+### Eclipse ###
+.apt_generated
+.classpath
+.factorypath
+.project
+.settings
+.springBeans
+.sts4-cache
+
+### NetBeans ###
+/nbproject/private/
+/nbbuild/
+/dist/
+/nbdist/
+/.nb-gradle/
+build/
+!**/src/main/**/build/
+!**/src/test/**/build/
+
+### VS Code ###
+.vscode/
+
+### Mac OS ###
+.DS_Store
\ No newline at end of file
diff --git a/2024/09/plugin_demo1/plugin_demo1/plugin-demo1-core/pom.xml b/2024/09/plugin_demo1/plugin_demo1/plugin-demo1-core/pom.xml
new file mode 100644
index 0000000..9384657
--- /dev/null
+++ b/2024/09/plugin_demo1/plugin_demo1/plugin-demo1-core/pom.xml
@@ -0,0 +1,28 @@
+
+
+ 4.0.0
+
+ pl.polgrabia.demos
+ plugin-demo1
+ 1.0-SNAPSHOT
+
+
+ plugin-demo1-core
+
+
+ 21
+ 21
+ UTF-8
+
+
+
+
+ ch.qos.logback
+ logback-classic
+ 1.5.6
+
+
+
+
\ No newline at end of file
diff --git a/2024/09/plugin_demo1/plugin_demo1/plugin-demo1-core/src/main/java/pl/polgrabia/demos/PluginRunner.java b/2024/09/plugin_demo1/plugin_demo1/plugin-demo1-core/src/main/java/pl/polgrabia/demos/PluginRunner.java
new file mode 100644
index 0000000..337fed7
--- /dev/null
+++ b/2024/09/plugin_demo1/plugin_demo1/plugin-demo1-core/src/main/java/pl/polgrabia/demos/PluginRunner.java
@@ -0,0 +1,22 @@
+package pl.polgrabia.demos;
+
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+public class PluginRunner {
+ private static final Logger logger = LoggerFactory.getLogger(PluginRunner.class);
+ private final PluginRunnerConfig config;
+
+ public PluginRunner(PluginRunnerConfig config) {
+ this.config = config;
+ }
+
+ public static void main(String[] args) {
+ new PluginRunner(new PluginRunnerConfig("1", "2"))
+ .execute();
+ }
+
+ public void execute() {
+ logger.info("Started runner id: {}, name: {}", config.id(), config.name());
+ }
+}
diff --git a/2024/09/plugin_demo1/plugin_demo1/plugin-demo1-core/src/main/java/pl/polgrabia/demos/PluginRunnerConfig.java b/2024/09/plugin_demo1/plugin_demo1/plugin-demo1-core/src/main/java/pl/polgrabia/demos/PluginRunnerConfig.java
new file mode 100644
index 0000000..7d55b4b
--- /dev/null
+++ b/2024/09/plugin_demo1/plugin_demo1/plugin-demo1-core/src/main/java/pl/polgrabia/demos/PluginRunnerConfig.java
@@ -0,0 +1,8 @@
+package pl.polgrabia.demos;
+
+public record PluginRunnerConfig(
+ String id,
+ String name
+) {
+
+}
diff --git a/2024/09/plugin_demo1/plugin_demo1/plugin-demo1-plugin/pom.xml b/2024/09/plugin_demo1/plugin_demo1/plugin-demo1-plugin/pom.xml
new file mode 100644
index 0000000..8d744ee
--- /dev/null
+++ b/2024/09/plugin_demo1/plugin_demo1/plugin-demo1-plugin/pom.xml
@@ -0,0 +1,41 @@
+
+
+ 4.0.0
+
+ pl.polgrabia.demos
+ plugin-demo1
+ 1.0-SNAPSHOT
+
+
+ plugin-demo1-plugin
+ maven-plugin
+
+
+ 21
+ 21
+ UTF-8
+
+
+
+
+ org.apache.maven.plugin-tools
+ maven-plugin-annotations
+ 3.6.0
+ provided
+
+
+ org.apache.maven
+ maven-plugin-api
+ 3.6.3
+ provided
+
+
+ pl.polgrabia.demos
+ plugin-demo1-core
+ 1.0-SNAPSHOT
+ compile
+
+
+
\ No newline at end of file
diff --git a/2024/09/plugin_demo1/plugin_demo1/plugin-demo1-plugin/src/main/java/pl/polgrabia/demos/mojos/PluginRunnerMojo.java b/2024/09/plugin_demo1/plugin_demo1/plugin-demo1-plugin/src/main/java/pl/polgrabia/demos/mojos/PluginRunnerMojo.java
new file mode 100644
index 0000000..15670c1
--- /dev/null
+++ b/2024/09/plugin_demo1/plugin_demo1/plugin-demo1-plugin/src/main/java/pl/polgrabia/demos/mojos/PluginRunnerMojo.java
@@ -0,0 +1,48 @@
+package pl.polgrabia.demos.mojos;
+
+import ch.qos.logback.core.util.StringUtil;
+import org.apache.maven.plugin.MojoExecutionException;
+import org.apache.maven.plugin.MojoFailureException;
+import org.apache.maven.plugin.logging.Log;
+import org.apache.maven.plugins.annotations.Mojo;
+import org.apache.maven.plugins.annotations.Parameter;
+import pl.polgrabia.demos.PluginRunner;
+import pl.polgrabia.demos.PluginRunnerConfig;
+
+@Mojo(name = "runner")
+public class PluginRunnerMojo implements org.apache.maven.plugin.Mojo {
+ private Log log;
+
+ @Parameter(name = "id")
+ private String id;
+
+ @Parameter(name = "name")
+ private String name;
+
+ @Override
+ public void execute() throws MojoExecutionException, MojoFailureException {
+ if (StringUtil.isNullOrEmpty(id)) {
+ id = System.getProperty("maven.runner.id");
+ }
+
+ if (StringUtil.isNullOrEmpty(name)) {
+ name = System.getProperty("maven.runner.name");
+ }
+
+ new PluginRunner(new PluginRunnerConfig(
+ id,
+ name
+ ))
+ .execute();
+ }
+
+ @Override
+ public void setLog(Log log) {
+ this.log = log;
+ }
+
+ @Override
+ public Log getLog() {
+ return log;
+ }
+}
diff --git a/2024/09/plugin_demo1/plugin_demo1/plugin-demo1-prog/pom.xml b/2024/09/plugin_demo1/plugin_demo1/plugin-demo1-prog/pom.xml
new file mode 100644
index 0000000..95a4f72
--- /dev/null
+++ b/2024/09/plugin_demo1/plugin_demo1/plugin-demo1-prog/pom.xml
@@ -0,0 +1,43 @@
+
+
+ 4.0.0
+
+ pl.polgrabia.demos
+ plugin-demo1
+ 1.0-SNAPSHOT
+
+
+ plugin-demo1-prog
+
+
+ 21
+ 21
+ UTF-8
+ id1
+ name1
+
+
+
+
+
+ pl.polgrabia.demos
+ plugin-demo1-plugin
+ 1.0-SNAPSHOT
+
+
+
+ runner
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/2024/09/plugin_demo1/plugin_demo1/pom.xml b/2024/09/plugin_demo1/plugin_demo1/pom.xml
new file mode 100644
index 0000000..4377730
--- /dev/null
+++ b/2024/09/plugin_demo1/plugin_demo1/pom.xml
@@ -0,0 +1,23 @@
+
+
+ 4.0.0
+
+ pl.polgrabia.demos
+ plugin-demo1
+ 1.0-SNAPSHOT
+ pom
+
+ plugin-demo1-core
+ plugin-demo1-plugin
+ plugin-demo1-prog
+
+
+
+ 21
+ 21
+ UTF-8
+
+
+
\ No newline at end of file