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..97299a2
--- /dev/null
+++ b/MavenPlugin/src/main/java/org/plugin/Constants.java
@@ -0,0 +1,8 @@
+package org.plugin;
+
+public class Constants {
+
+ public static final String SPACE = " ";
+ 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);
+ }
+ }
+}