Grundlegendes Maven-Plugin-Projekt funktioniert nicht, Mojo-Plugin-Deskriptoren werden nicht generiert
Lesezeit: 8 Minuten
Coderatsche
Ich verfolge die Lernprogramm zum Erstellen eines Maven-Plugins und kann mvn install nicht ausführen, ohne Fehler zu erhalten. Die Info beschwert sich, dass ich nicht die erforderlichen Mojo-Deskriptoren habe, wenn die Anmerkungen sie für mich generieren sollten. Ich verwende Maven 3.0.5 und verwende Intellij als meine Idee. Hier ist meine Hauptklasse:
@Mojo(name = "modify-connector")
public class ComplianceMojo extends AbstractMojo {
@Parameter
private String artifactId;
@Parameter
private String version;
@Override
public void execute() throws MojoExecutionException, MojoFailureException {
File jar = new File(getPluginContext().get("project.build.directory") + "https://stackoverflow.com/"
+ getPluginContext().get("project.build.finalname") + "https://stackoverflow.com/" + artifactId + "-" + version);
if(jar.exists()){
getLog().info("The file exists! " + jar.getAbsolutePath());
} else {
getLog().info("The file does not exist: " + jar.getAbsolutePath());
}
}
}
Notiz: Ich musste die Anmerkungsabhängigkeit separat hinzufügen, da die Haupt-Plugin-API diese Klassen nicht enthielt. Wenn ich mvn install in meinem Projekt ausführe, sieht die Ausgabe wie folgt aus:
[INFO] ------------------------------------------------------------------------
[INFO] BUILD FAILURE
[INFO] ------------------------------------------------------------------------
[INFO] Total time: 0.867s
[INFO] Finished at: Wed Sep 25 17:45:55 EST 2013
[INFO] Final Memory: 8M/244M
[INFO] ------------------------------------------------------------------------
[ERROR] Failed to execute goal org.apache.maven.plugins:maven-plugin-plugin:2.9:descriptor (default-descriptor) on project mysql-jdbc-compliance-maven-plugin: Error extracting plugin descriptor: 'No mojo definitions were found for plugin: mysql-jdbc-compliance-maven-plugin:mysql-jdbc-compliance-maven-plugin.' -> [Help 1]
[ERROR]
[ERROR] To see the full stack trace of the errors, re-run Maven with the -e switch.
[ERROR] Re-run Maven using the -X switch to enable full debug logging.
[ERROR]
[ERROR] For more information about the errors and possible solutions, please read the following articles:
[ERROR] [Help 1] http://cwiki.apache.org/confluence/display/MAVEN/MojoExecutionException
Aber siehe die Kommentare in der JIRA-Ausgabe für ausführlichere Lösungen!
Ich habe das von Ihnen gepostete Problem gelesen und die Problemumgehung auf der Website implementiert, und es hat funktioniert! Danke, dass du mich darauf hingewiesen hast 🙂
Dieser Eintrag wird tatsächlich zu Ihrem Plugin hinzugefügt pom.xml automatisch, wenn Sie das Projekt mit dem Maven-Archetyp generieren: mvn archetype:generate -DgroupId=com.example -DartifactId=my-awesome-maven-plugin -DarchetypeGroupId=org.apache.maven.archetypes -DarchetypeArtifactId=maven-archetype-plugin
– Jan Molak
9. Juli 2015 um 11:39 Uhr
Mit mvn 3.3.9 benötigte ich nur groupId, artifactId und v3.5 – die gesamte Konfiguration ist Standard.
– Adam
2. November 2017 um 9:53 Uhr
Jmini
Wie in der vorherigen Antwort erwähnt, war dies ein Fehler, der jetzt behoben ist.
Sie müssen maven nur mitteilen, dass es eine neuere Version von verwenden soll maven-plugin-plugin.
Das einfache Erhöhen der Maven-Plug-in-Version auf 3.3 oder 3.4 behebt kein Problem (wie einige angegeben haben).
Sie müssen mindestens hinzufügen default-descriptor Ausführung mit der richtigen Phase. Die Mindestkonfiguration der Build-Informationen lautet also wie folgt:
[ERROR] Das Ziel „sayhi“ konnte im Plugin sample.plugin:hello-maven-plugin:1.0-SNAPSHOT nicht unter den verfügbaren Zielen gefunden werden -> [Help 1]
Stellt sich heraus
skipErrorNoDescriptorsFound
nur den Fehler unterdrückt. dh es hat das zugrunde liegende Problem nicht gelöst. Ich habe diesen Fix entfernt.
Danach war die Lösung einfach (und die Ursache rein meine Schuld). Als ich GreetingMojo.java erstellt habe, habe ich es im folgenden Verzeichnis abgelegt