Ich habe eine Frage zum Ausführen von maven Plugin
ich habe eine Mojo Plugin geschrieben welches 2 .xml dateien liest und eine .xml datei erstellt.
die Plugin macht auch das gewünschte.
zur meiner Frage:
Ich habe z.B. Ordner A,B,C
B und C sind unterordner von A
in B und C liegen jeweils die .xml Dateien die ich lese
Ich möchte nun die die Plugin im Konsole in A ausführen also
c:\A>mvn de.search:maven-search-plugin:search
Ich bekomme dann die Fehler dass es nicht ausgeführt werden kann weil es keine pom.xml Datei existiert.
Ich verstehe nicht wieso ich nochmal eine pom.xml brauche, die Stellen wo die .xml Dateien liegen habe ich in .java schon geschrieben. Das Plugin müsste also nur die java Datei ausführen???
ich habe plugin.xml geändert aber wenn ich mvn install ausführe dann schreibt er wieder auf requiersProject wieder true.
Auf der Seite die du geschrieben hast steht auch dass man mvn install ausführen soll
Was mache ich falsch?
In der Datei wo ich mein Plugin ausführen möchte steht eine pom.xml drin. Dann liest mein Plugin diese pom.xml und gibt Fehler aus.
Gibts eine Möglichkeit zu sagen dass das Plugin keine pom.xml lesen soll.
Gruß
Ich glaube mit der Projektstruktur meinst die Ordnerstruktur wo das Plugin ausgeführt werden soll
data
control
test
assambly
core
layout
...
runtime
Das Plugin werde ich in data ausführen und fast in jedem Ordner (data eingeschlossen) gibts ein pom.xml. Ich benutze aber nur die in assembly und runtime.
Da in data ein pom.xml drin ist liest mein Plugin diese und gibt Fehler aus.
Ich glaube mit der Projektstruktur meinst die Ordnerstruktur wo das Plugin ausgeführt werden soll
Java:
data
control
test
assambly
core
layout
...
runtime
Das Plugin werde ich in data ausführen und fast in jedem Ordner (data eingeschlossen) gibts ein pom.xml. Ich benutze aber nur die in assembly und runtime.
Da in data ein pom.xml drin ist liest mein Plugin diese und gibt Fehler aus.
also es wäre auch schön wenn Du die Fehlermeldung mit geliefert hättest....
abgesehen davon hast Du keine Integrations-Tests für Dein Plugin geschrieben, damit ist Testen nämlich sehr einfach...(siehe maven-invoker-plugin)...
Weiterhin wird von Maven selbst die pom.xml gelesen...
Die Fehler ensteht weil das Plugin ein pom.xml liest womit er nichts anfangen kann.
Mein Plugin braucht nichts zu lesen.
Da aber jedes Plugin die pom.xml liest wenn es in dem aufgerufenen Ordner drin ist liest auch mein Plugin.
genau das möchte ich vermeiden. Gibts irgendein Befehl womit ich das Lesen von pom.xml untersagen kann?
Ich weiss das klingt bisschen unsinnig ich glaube das würd auch garnicht gehen.
Hallo zusammen,
tut mir leid dass ich so lange nicht schreiben konnte Ich musste plötzlich etwas anderes machen.
Das alles klappt leider nicht. Ich glaube ich habe das kommplet falsch angefangen.
Also fürs erste muss ich mit meinem Mojo eine andere pom.xml datei lesen und in der Datei nach dependency suchen und ihre versionen ausgeben
die pom.xml Datei sieht so aus (die sind ebenso selbstgeschrieben)
deswegen habe ich versucht ein Artifact oder Plugin aus dem Dependency zu erstellen damit ich an die Version kommen kann welches aber immer mit einer Fehlermeldung endete. (nicht zu wissen ob das überhaupt möglich ist macht es schwierig sich zu motivieren...)
2. Alle Plugins sind selbst geschrieben und auf meinem Rechner gespeichert. Nun möchte ich zu jedem Anhängigkeit(quasi Plugin) den gespeicherten Ort finden (quasi den path)
da habe ich allerdings auch meine Zweifeln ob das überhaupt geht...
Habt ihr für mich noch einpaar Tipps. Mir fehlt die Motivation weil ich einfach nicht weiss wie ich versuchen soll zu implementieren
Wenn das eine gültige POM ist, dass sind dort Versionen. Entweder explizit was hier nicht der Fall ist, dann aber per Parent POM...
2. Alle Plugins sind selbst geschrieben und auf meinem Rechner gespeichert. Nun möchte ich zu jedem Anhängigkeit(quasi Plugin) den gespeicherten Ort finden (quasi den path)
da habe ich allerdings auch meine Zweifeln ob das überhaupt geht...
ich verstehs leider nicht... warum hast du in einem Plugin den festen pfad zu einer Pom ?
wie setzt du das plugin ein ?
(siehe beitrag im byte-welt forum) - wenn du ein Projekt haben willst dass du von kommandozeile haben willst brauchst du kein Mavenplugin...
warum fuegst du dein generisches plugin nicht in das projekt ein dessen pom du haben willst, dann brauchst du keine absoluten pfade zu irgendwelchen files.
Das ist ja auch das Problem. Es gibt kein Projekt. Die pom.xml ist sowas wie eine Zusammenfassung von der Mojos.
Das Plugin hat die Aufgabe alle Mojos zu finden die in Version "SNAPSHOT" enthalten und ihre path auszugeben . Das Plugin soll nacher vielmehr können aber erstmal nur das.
Das Plugin hat auch keine festen Pfad zum Pom, das habe fürs erste einfach so eingegeben
ich glaube bis jetzt hat keiner kapiert was du eigentlich machen willst, ich lese diesen Thread und denke mir immer nur: Wozu?
Der "path" wie du ihn nennst ist doch irrelevant, könnte im lokalen Maven Repo stehen, wird zusammengesetzt aus groudId, artifactId, verison u.U. dem Classifier, aber wozu den "path" herausfinden???
Liegt es vielleciht daran, dass Maven2 nicht richtig verstanden wird?
Hi,
Das Plugin soll die Mojos bereitstellen, die noch keine feste version bekommen haben also die noch "SNAPSHOT" in version enthalten und ihre standort damit man nicht danach suchen muss denn es gibt wirklich viele davon...
Das mache ich für die Arbeit, was sie danach damit alles machen weiss ich nicht genau.
das klappt nicht ((
Ich benutze die Plugins eigentlich nicht. Ich lese sie nur.
Gibt es eine Möglichkeit aus groupId und artifactId den "Artifact" zu finden sodass ich an die pfad rankommen kann oder die pom.xml so lesen zu lassen dass es sich die Artifacts gleich erstellt
Gibt es eine Möglichkeit aus groupId und artifactId den "Artifact" zu finden sodass ich an die pfad rankommen kann oder die pom.xml so lesen zu lassen dass es sich die Artifacts gleich erstellt
Wie ich bereits sagte, der "Pfad" hängt direkt mit den Koordinaten zusammen, den 2. Teil der Frage hab ich nicht verstanden, "artifacts erstellen" und wozu "pom.xml lesen"??
mit Artifact meine ich org.apache.maven.artifact.Artifact
das enthält alle nötigen Informationen.
das bekommt man eigentlich mit "project.getArtifacts()" was bei mir aber nur eine leere Liste liefert.
deswegen die Frage ob ich aus groupId und artifactId den Artifact selber finden kann
Das ist ja auch das Problem. Es gibt kein Projekt. Die pom.xml ist sowas wie eine Zusammenfassung von der Mojos.
Das Plugin hat die Aufgabe alle Mojos zu finden die in Version "SNAPSHOT" enthalten und ihre path auszugeben . Das Plugin soll nacher vielmehr können aber erstmal nur das.
Das Plugin hat auch keine festen Pfad zum Pom, das habe fürs erste einfach so eingegeben
Also um mal etwas klarzustellen....Wenn Du ein Plugin schreibst, dann wird das in der Anwedung im Rahmen eines pom.xml verwendet dann hast Du eine Projekt eine POM etc. alles was man braucht.......weiterhin gibt es für so etwas Integrations-Tests (Habe ich glaube schon mal drauf hingewiesen)...
Wenn Du mit Maven eine release machst wird dass dich schon darauf aufmerksam machen, dass SNAPSHOT's enthalten sind und keine Release erstellen....
Mir scheint hier völlig unklar zu sein was das eigentliche Ziel der ganzen Geschichte ist...und die muss zuerst geklärt werden...und das Verständniss von Maven selbst scheint auch nocht nicht sehr weit gediegen zu sein....
Wenn Du einen Build gemacht hast mit Maven (mvn package) alle Abhängigkeiten hast Du dann im lokalen Repository (/home/.m2/repository)...
"Ich will ein Programm haben was mir eine bzw alle poms die irgendwo sind, herausfindet welche noch SNAPSHOT als Text drin stehen haben"
ja ?
dann lass bitte das als Mojo zu schreiben. Mach ein normales, stinkübliches Java Programm.
Wenn Du ein Plugin schreibst, dann wird das in der Anwedung im Rahmen eines pom.xml verwendet dann hast Du eine Projekt eine POM etc. alles was man braucht
stinkübliches Java Programm habe als erstes geschrieben aber das Programm brauchte einfach viel zu lange. Wir möchten das mit Mojo machen weil das gerade pom.xml ist und man nicht wie verrückt Orndner durchsuchen muss.
Also wenn ich jetzt den "Artifact" erstellen kann dann bin in 4-5 Zeilen fertig anstatt 40-50
stinkübliches Java Programm habe als erstes geschrieben aber das Programm brauchte einfach viel zu lange. Wir möchten das mit Mojo machen weil das gerade pom.xml ist und man nicht wie verrückt Orndner durchsuchen muss.
Also wenn ich jetzt den "Artifact" erstellen kann dann bin in 4-5 Zeilen fertig anstatt 40-50
Nochmal:
Ein Artifakt ist etwas ganz anders als ein Plugin.
Ein Artifakt hat zwangsläufig einen Pfad im Dateisystem, ein Plugin nicht.
Was du willst geht nicht.