From 358e8e5114b45107916822829a6a751875b15a9e Mon Sep 17 00:00:00 2001 From: vsirik Date: Sat, 15 Feb 2025 21:11:58 +0300 Subject: [PATCH 1/2] Maven plugin --- EmptyProject/pom.xml | 37 ++++++ MavenPlugin/pom.xml | 47 ++++++- .../src/main/java/org/plugin/Constants.java | 9 ++ .../src/main/java/org/plugin/Main.java | 7 -- .../src/main/java/org/plugin/Plugin.java | 116 ++++++++++++++++++ 5 files changed, 207 insertions(+), 9 deletions(-) create mode 100644 MavenPlugin/src/main/java/org/plugin/Constants.java delete mode 100644 MavenPlugin/src/main/java/org/plugin/Main.java create mode 100644 MavenPlugin/src/main/java/org/plugin/Plugin.java diff --git a/EmptyProject/pom.xml b/EmptyProject/pom.xml index 0b30830..cef5e7a 100644 --- a/EmptyProject/pom.xml +++ b/EmptyProject/pom.xml @@ -14,4 +14,41 @@ UTF-8 + + + jdoe + John Doe + jdoe@example.com + http://www.example.com/jdoe + ACME + http://www.example.com + + architect + developer + + America/New_York + + http://www.example.com/jdoe/pic + + + + + + + + org.plugin + my-maven-plugin + 1.0.0 + + + compile + + custom-develop + + + + + + + \ No newline at end of file diff --git a/MavenPlugin/pom.xml b/MavenPlugin/pom.xml index 9f5cd58..5c3940d 100644 --- a/MavenPlugin/pom.xml +++ b/MavenPlugin/pom.xml @@ -5,8 +5,34 @@ 4.0.0 org.plugin - MavenPlugin - 1.0-SNAPSHOT + my-maven-plugin + 1.0.0 + + maven-plugin + + + + + org.apache.maven + maven-core + 3.9.9 + + + + + org.apache.maven + maven-plugin-api + 3.9.8 + + + + + org.apache.maven.plugin-tools + maven-plugin-annotations + 3.15.1 + provided + + 17 @@ -14,4 +40,21 @@ UTF-8 + + + + org.apache.maven.plugins + maven-plugin-plugin + 3.9.0 + + + + descriptor + + + + + + + \ No newline at end of file diff --git a/MavenPlugin/src/main/java/org/plugin/Constants.java b/MavenPlugin/src/main/java/org/plugin/Constants.java new file mode 100644 index 0000000..7725e58 --- /dev/null +++ b/MavenPlugin/src/main/java/org/plugin/Constants.java @@ -0,0 +1,9 @@ +package org.plugin; + +public class Constants { + + public static final String SPACE = " "; + public static final String EMPTY = ""; + public static final String SPLITTER = "------------------------------"; + +} diff --git a/MavenPlugin/src/main/java/org/plugin/Main.java b/MavenPlugin/src/main/java/org/plugin/Main.java deleted file mode 100644 index 407f157..0000000 --- a/MavenPlugin/src/main/java/org/plugin/Main.java +++ /dev/null @@ -1,7 +0,0 @@ -package org.example; - -public class Main { - public static void main(String[] args) { - System.out.println("Hello world!"); - } -} \ No newline at end of file diff --git a/MavenPlugin/src/main/java/org/plugin/Plugin.java b/MavenPlugin/src/main/java/org/plugin/Plugin.java new file mode 100644 index 0000000..d9f59cf --- /dev/null +++ b/MavenPlugin/src/main/java/org/plugin/Plugin.java @@ -0,0 +1,116 @@ +package org.plugin; + +import org.apache.maven.model.Developer; +import org.apache.maven.plugin.AbstractMojo; +import org.apache.maven.plugin.MojoExecutionException; +import org.apache.maven.plugins.annotations.Mojo; +import org.apache.maven.plugins.annotations.Parameter; +import org.apache.maven.project.MavenProject; + +import java.util.List; + +import static org.plugin.Constants.SPACE; +import static org.plugin.Constants.SPLITTER; + +@Mojo(name = "custom-develop") +public class Plugin extends AbstractMojo { + + @Parameter(defaultValue = "${project}", required = true, readonly = true) + private MavenProject project; + + @Override + public void execute() throws MojoExecutionException { + List list = project.getDevelopers(); + if (list == null || list.isEmpty()) { + throw new MojoExecutionException("There is no developers"); + } + getLog().info("Develop plugin stage is started"); + StringBuilder stringBuilder = new StringBuilder(); + String lineSeparator = System.lineSeparator(); + int listSize = list.size(); + stringBuilder.append(lineSeparator) + .append(SPLITTER).append(lineSeparator); + for (int i = 0; i < listSize; i++) { + Developer developer = list.get(i); + developId(developer, stringBuilder, lineSeparator); + developName(developer, stringBuilder, lineSeparator); + developEmail(developer, stringBuilder, lineSeparator); + developLocation(developer, stringBuilder, lineSeparator); + developOrganization(developer, stringBuilder, lineSeparator); + developRoles(developer, stringBuilder, lineSeparator); + developTimeZone(developer, stringBuilder, lineSeparator); + developUrl(developer, stringBuilder, lineSeparator); + if (i != listSize - 1) { + stringBuilder.append(SPLITTER).append(lineSeparator); + } else { + stringBuilder.append(SPLITTER); + } + } + int lastIndexSeparator = stringBuilder.lastIndexOf(lineSeparator); + stringBuilder.deleteCharAt(lastIndexSeparator); + getLog().info(stringBuilder.toString()); + } + + private void developId(Developer developer, StringBuilder stringBuilder, String lineSeparator) { + if (developer.getId() != null) { + String id = developer.getId(); + stringBuilder.append(id) + .append(lineSeparator); + } + } + + private void developName(Developer developer, StringBuilder stringBuilder, String lineSeparator) { + if (developer.getName() != null) { + String name = developer.getName(); + stringBuilder.append(name) + .append(SPACE) + .append(lineSeparator); + } + } + + private void developEmail(Developer developer, StringBuilder stringBuilder, String lineSeparator) { + if (developer.getEmail() != null) { + String email = developer.getEmail(); + stringBuilder.append(email) + .append(lineSeparator); + } + } + + private void developLocation(Developer developer, StringBuilder stringBuilder, String lineSeparator) { + if (developer.getLocation(developer) != null) { + String location = developer.getLocation(developer).toString(); + stringBuilder.append(location) + .append(lineSeparator); + } + } + + private void developOrganization(Developer developer, StringBuilder stringBuilder, String lineSeparator) { + if (developer.getOrganization() != null) { + String organization = developer.getOrganization(); + stringBuilder.append(organization) + .append(lineSeparator); + } + } + + private void developRoles(Developer developer, StringBuilder stringBuilder, String lineSeparator) { + if (developer.getRoles() != null) { + developer.getRoles().forEach(e -> stringBuilder.append(e).append(lineSeparator)); + } + } + + private void developTimeZone(Developer developer, StringBuilder stringBuilder, String lineSeparator) { + if (developer.getTimezone() != null) { + String timezone = developer.getTimezone(); + stringBuilder.append(timezone) + .append(lineSeparator); + } + } + + private void developUrl(Developer developer, StringBuilder stringBuilder, String lineSeparator) { + if (developer.getUrl() != null) { + String url = developer.getUrl(); + stringBuilder.append(url) + .append(lineSeparator); + } + } +} From 0a65a8b1b591c4b22f5491eeb96a2df94a8e3992 Mon Sep 17 00:00:00 2001 From: vsirik Date: Sat, 15 Feb 2025 21:15:02 +0300 Subject: [PATCH 2/2] del constant --- MavenPlugin/src/main/java/org/plugin/Constants.java | 1 - 1 file changed, 1 deletion(-) diff --git a/MavenPlugin/src/main/java/org/plugin/Constants.java b/MavenPlugin/src/main/java/org/plugin/Constants.java index 7725e58..97299a2 100644 --- a/MavenPlugin/src/main/java/org/plugin/Constants.java +++ b/MavenPlugin/src/main/java/org/plugin/Constants.java @@ -3,7 +3,6 @@ public class Constants { public static final String SPACE = " "; - public static final String EMPTY = ""; public static final String SPLITTER = "------------------------------"; }