Maven Plugin-Dependency

Dieses Thema Maven Plugin-Dependency im Forum "Application Tier" wurde erstellt von JonnyRico, 2. Jan. 2013.

Thema: Maven Plugin-Dependency Hi, ich habe ein Maven-Plugin X, das ein Stück Software Y benutzt. Y kann durch "Plugins" (<-- das hat nichts mit...

  1. Hi,

    ich habe ein Maven-Plugin X, das ein Stück Software Y benutzt. Y kann durch "Plugins" (<-- das hat nichts mit Maven zu tun!) per Spring-Injection erweitert werden. An bestimmten Stellen werden Listen von Interfaces injiziert und wenn diese zur Laufzeit da sind, dann weden alle vorhanden abgearbeitet.

    Was ich jetzt möchte ist, dass ich in meinem Projekt Z das Maven-Plugin X verwenden kann und den Classpath für die Pluginausführung um das Projekt A erweitere. Dieses enthält die Beans, die in Y injected werden sollen. Leider funktioniert dies nicht so 100% wie ich mir das vorstelle. Ich habe im Projekt Z folgende Config:

    [XML]
    <build>
    <plugins>
    <plugin>
    <groupId>org.foo</groupId>
    <artifactId>X</artifactId>
    <version>0.1-SNAPSHOT</version>
    <configuration>
    ...
    </configuration>
    <dependencies>
    <dependency>
    <groupId>org.foo</groupId>
    <artifactId>A</artifactId>
    <version>1.0-SNAPSHOT</version>
    </dependency>
    </dependencies>
    </plugin>
    </plugins>

    </build>
    [/XML]

    Leider werden die Klassen aus A durch X bzw. eigentlich Y nicht gefunden. Kann mir vielleicht jemand einen Tipp geben? Vielen Dank im Voraus.

    Gruß

    Jonny
     
  2. Vielleicht hilft dir das Java-Tutorial weiter. Hier klicken --> (Klick)
  3. Hm...

    Wird ja mit der angegebenen Konfiguration auch so gemacht...

    Sprich X ist ein Plugin das während des Build Life-Cycles läuft...Der Classpath des Plugins X wird um den Artefact A ergänzt...

    So was mir nicht klar ist wer ist bei dem ganzen Spiel nun Y ist und wo vor allem?

    Gruß
    Karl-Heinz Marbaise
     
  4. Hallo Karl-Heinz,

    danke für deine schnelle Antwort. Ich hatte mir das eigentlich auch so gedacht (analog project-dependencies).
    Y ist in diesem Beispiel nicht zu sehen. X implementiert AbstractMojo, passt die Parameter an und hat selbst eine Dependency zu Y, da Y die eigentliche Arbeit tut. Damit aber Y in diesem Beispiel die Arbeit korrekt verrichten kann, braucht es A im Classpath und das ist genau der Punkt, der nicht klappt ;(
    Wenn ich mir im Projekt Z mit 'mvn dependency:resolve-plugins' angucke wie die Dependencies für die Plugins aussehen, ist auch zu erkennen, dass mein manueller Dependancy-Eintrag nicht zieht.

    Code (Text):

    [INFO] ...
    [INFO] Plugin Resolved: X-0.1-SNAPSHOT.jar
    [INFO]     Plugin Dependency Resolved: Y-0.5-SNAPSHOT.jar
    [INFO]     Plugin Dependency Resolved: maven-plugin-api-2.0.jar
    [INFO] Plugin Resolved: ....
     
     
  5. Hi,
    Hast Du dir denn mal den Classpath angeschaut, da nämlich mit der Dependency genau das erreicht wird...

    Hm...Du solltest Dependencies nicht mit dem Classpath verwechseln...Hier wirst Du die Dependency auch nicht zu sehen bekommen...mach ein mvn -X clean package und schaue Dir dann den Classpath an...

    Abgesehen davon wäre hier jetzt mal ein konkreter pom file wirklich hilfreich...

    Abgesehen davon hört sich das Ganze ein wenig merkwürdigt an, dass über Spring Injection gearbeitet wird...Maven hat seinen eigenen DI (plexus bzw. Guice)..Warum hier Spring notwendig ist mir nicht klar...

    Gruß
    Karl-Heinz Marbaise
     
  6. Schau dir jetzt hier den Kurs an und lernen Java zu programmieren: --> Hier klicken, um mehr zu erfahren (Klick)