From b98168cbadec52b1b6a40dce72147d8b6c7184dc Mon Sep 17 00:00:00 2001 From: Flawden Date: Fri, 11 Apr 2025 17:46:49 +0300 Subject: [PATCH] The plugin was created --- .idea/.gitignore | 8 +++ .idea/encodings.xml | 9 ++++ .idea/misc.xml | 15 ++++++ .idea/vcs.xml | 6 +++ EmptyProject/pom.xml | 33 ++++++++++++ MavenPlugin/pom.xml | 52 ++++++++++++++++++- .../java/org/plugin/AuthorsNameShower.java | 40 ++++++++++++++ .../src/main/java/org/plugin/Main.java | 7 --- README.md | 16 +++--- 9 files changed, 167 insertions(+), 19 deletions(-) create mode 100644 .idea/.gitignore create mode 100644 .idea/encodings.xml create mode 100644 .idea/misc.xml create mode 100644 .idea/vcs.xml create mode 100644 MavenPlugin/src/main/java/org/plugin/AuthorsNameShower.java delete mode 100644 MavenPlugin/src/main/java/org/plugin/Main.java diff --git a/.idea/.gitignore b/.idea/.gitignore new file mode 100644 index 0000000..13566b8 --- /dev/null +++ b/.idea/.gitignore @@ -0,0 +1,8 @@ +# Default ignored files +/shelf/ +/workspace.xml +# Editor-based HTTP Client requests +/httpRequests/ +# Datasource local storage ignored files +/dataSources/ +/dataSources.local.xml diff --git a/.idea/encodings.xml b/.idea/encodings.xml new file mode 100644 index 0000000..fa3d7fb --- /dev/null +++ b/.idea/encodings.xml @@ -0,0 +1,9 @@ + + + + + + + + + \ No newline at end of file diff --git a/.idea/misc.xml b/.idea/misc.xml new file mode 100644 index 0000000..1f6fe7a --- /dev/null +++ b/.idea/misc.xml @@ -0,0 +1,15 @@ + + + + + + + + + + \ No newline at end of file diff --git a/.idea/vcs.xml b/.idea/vcs.xml new file mode 100644 index 0000000..35eb1dd --- /dev/null +++ b/.idea/vcs.xml @@ -0,0 +1,6 @@ + + + + + + \ No newline at end of file diff --git a/EmptyProject/pom.xml b/EmptyProject/pom.xml index 0b30830..0eff727 100644 --- a/EmptyProject/pom.xml +++ b/EmptyProject/pom.xml @@ -8,10 +8,43 @@ EmptyProject 1.0-SNAPSHOT + EmptyProject + A project to test the MavenPlugin + 17 17 UTF-8 + + + Flawden + Flawden + topchiidv1998@gmail.com + + Developer + + + + + + + + org.plugin + MavenPlugin + 1.0-SNAPSHOT + + + print-developers + compile + + print-developers + + + + + + + \ No newline at end of file diff --git a/MavenPlugin/pom.xml b/MavenPlugin/pom.xml index 9f5cd58..5600cc6 100644 --- a/MavenPlugin/pom.xml +++ b/MavenPlugin/pom.xml @@ -7,11 +7,59 @@ org.plugin MavenPlugin 1.0-SNAPSHOT + maven-plugin + + MavenPlugin + A Maven plugin to print developer information - 17 - 17 + 11 + 11 UTF-8 + + + org.apache.maven + maven-plugin-api + 3.9.6 + + + org.apache.maven.plugin-tools + maven-plugin-annotations + 3.13.1 + provided + + + org.apache.maven + maven-core + 3.9.6 + + + org.apache.maven + maven-compat + 3.9.6 + + + + + + + org.apache.maven.plugins + maven-plugin-plugin + 3.13.1 + + devinfo + + + + default + + helpmojo + + + + + + \ No newline at end of file diff --git a/MavenPlugin/src/main/java/org/plugin/AuthorsNameShower.java b/MavenPlugin/src/main/java/org/plugin/AuthorsNameShower.java new file mode 100644 index 0000000..b68b992 --- /dev/null +++ b/MavenPlugin/src/main/java/org/plugin/AuthorsNameShower.java @@ -0,0 +1,40 @@ +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.LifecyclePhase; +import org.apache.maven.plugins.annotations.Mojo; +import org.apache.maven.plugins.annotations.Parameter; +import org.apache.maven.project.MavenProject; + +import java.util.List; + +/** + * Плагин для вывода информации о разработчиках из pom.xml. + */ +@Mojo(name = "print-developers", defaultPhase = LifecyclePhase.COMPILE) +public class AuthorsNameShower extends AbstractMojo { + + @Parameter(defaultValue = "${project}", readonly = true, required = true) + private MavenProject project; + + @Override + public void execute() throws MojoExecutionException { + getLog().info("=== Информация о разработчиках ==="); + + List developers = project.getDevelopers(); + if (developers == null || developers.isEmpty()) { + getLog().info("Разработчики не указаны в pom.xml"); + return; + } + + for (org.apache.maven.model.Developer developer : developers) { + getLog().info("ID: " + (developer.getId() != null ? developer.getId() : "Не указан")); + getLog().info("Имя: " + (developer.getName() != null ? developer.getName() : "Не указано")); + getLog().info("Email: " + (developer.getEmail() != null ? developer.getEmail() : "Не указан")); + getLog().info("Роли: " + (developer.getRoles() != null && !developer.getRoles().isEmpty() ? developer.getRoles() : "Не указаны")); + getLog().info("-------------------"); + } + } +} \ No newline at end of file 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/README.md b/README.md index 01fab6a..86dc46e 100644 --- a/README.md +++ b/README.md @@ -1,12 +1,8 @@ -# Практическое задание 1 # Maven plugin +# MavenPlugin -Нужно реализовать maven plugin, который будет выводить информцию о разработчике\разработчиках. Информация об этом находится в теге https://maven.apache.org/pom.html#Developers. +Maven-плагин для вывода информации о разработчиках из тега `` в `pom.xml`. -Проект MavenPlugin должен содержать сам плагин. После реализации плагина, его нужно поключить к проекту EmptyProject. - -**Как выполнить:** -1. Сделать форк этого проекта -2. Сделать ветку dev в своем проекте. Выполнять работу в ней -3. После выполнения работы открыть Pull Request в master -4. Назначить ментора ревьювером -5. Отправить ссылку на PR в тг чат ментору \ No newline at end of file +## Как работает +- Извлекает данные о разработчиках (ID, имя, email, роли) из `pom.xml`. +- Выводит информацию в консоль на фазе `compile`. +- Проект `EmptyProject` демонстрирует использование плагина. \ No newline at end of file