jars from dependency custom create java maven maven-plugin

java - from - ¿Por qué Maven no puede encontrar mi Mojo personalizado?



local jar dependency maven (2)

EDITAR (abordando el uso de las anotaciones de Mojo):

Intenté crear un complemento con las anotaciones y encontré el mismo problema. Lo resolví vinculando el complemento a una fase predeterminada del ciclo de vida, como se muestra a continuación en la anotación @Mojo :

Mojo

@Mojo(name = "hello", defaultPhase = LifecyclePhase.INSTALL) public class MyMojo extends AbstractMojo { public void execute() throws MojoExecutionException, MojoFailureException { getLog().info("Hello"); } }

Mojo POM

<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> <modelVersion>4.0.0</modelVersion> <groupId>testware.mojotest</groupId> <artifactId>mojotest</artifactId> <version>0.0.1-SNAPSHOT</version> <name>mojotest</name> <packaging>maven-plugin</packaging> <dependencies> <dependency> <groupId>org.apache.maven</groupId> <artifactId>maven-plugin-api</artifactId> <version>2.0</version> </dependency> <dependency> <groupId>org.apache.maven.plugin-tools</groupId> <artifactId>maven-plugin-annotations</artifactId> <version>3.2</version> </dependency> </dependencies> <build> <plugins> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-plugin-plugin</artifactId> <version>3.2</version> <configuration> <skipErrorNoDescriptorsFound>true</skipErrorNoDescriptorsFound> </configuration> </plugin> </plugins> </build> </project>

POM del proyecto que invoca a Mojo

<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> <modelVersion>4.0.0</modelVersion> <groupId>testware.mojotest</groupId> <artifactId>mojotest-runner</artifactId> <version>0.0.1-SNAPSHOT</version> <name>mojotest-runner</name> <build> <plugins> <plugin> <groupId>testware.mojotest</groupId> <artifactId>mojotest</artifactId> <version>0.0.1-SNAPSHOT</version> <executions> <execution> <phase>compile</phase> <goals> <goal>hello</goal> </goals> </execution> </executions> </plugin> </plugins> </build> </project>

Tengo una clase Mojo propia.

@Mojo(name="mojo", threadSafe=true) public class MyMojo extends AbstractMojo { @Component private MavenProject project; public void execute() throws MojoExecutionException, MojoFailureException { getLog().info("Execute"); } }

Después de eso lo instalo en el repositorio local.

[INFO] Applying mojo extractor for language: java-annotations [INFO] Mojo extractor for language: java-annotations found 0 mojo descriptors. [INFO] Applying mojo extractor for language: java [INFO] Mojo extractor for language: java found 0 mojo descriptors. [INFO] Applying mojo extractor for language: bsh [INFO] Mojo extractor for language: bsh found 0 mojo descriptors. .... [INFO] BUILD SUCCESS

Pero cuando intento llamar al objetivo ''mojo'', recibí un error

[ERROR] Could not find goal ''mojo'' in plugin my.plugins:my-plugin:1.0-SNAPSHOT among available goals -> [Help 1] what is the problem?

Aquí está la configuración maven-plugin-plugin.

<plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-plugin-plugin</artifactId> <version>3.2</version> <configuration> <skipErrorNoDescriptorsFound>true</skipErrorNoDescriptorsFound> </configuration> </plugin>

El viejo mecanismo con las anotaciones de javadoc funciona bien, pero quiero usar la anotación de Java.

<dependency> <groupId>org.apache.maven.plugin-tools</groupId> <artifactId>maven-plugin-annotations</artifactId> <version>3.2</version> </dependency> [INFO] --- maven-plugin-plugin:3.2:descriptor (default-descriptor) @ bla-mvn-plugin

¿Por qué default-descriptor está habilitado en lugar de mojo-descriptor?


Agregue esta sección al POM de su complemento:

<build> <pluginManagement> <plugins> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-plugin-plugin</artifactId> <version>3.2</version> <configuration> <skipErrorNoDescriptorsFound>true</skipErrorNoDescriptorsFound> </configuration> <executions> <execution> <id>mojo-descriptor</id> <phase>process-classes</phase> <goals> <goal>descriptor</goal> </goals> </execution> </executions> </plugin> </plugins> </pluginManagement> </build>

PD. Ver maven-compiler-plugin: fuentes 3.0 para el ejemplo de trabajo completo de construir MOJO con anotaciones