Maven Warum werden alte dependencies deployt?!

BuckRogers

Bekanntes Mitglied
Hallo liebe Gemeinde,

folgendes Problemchen kurz und knapp erläutert, vielleicht kennt sich ja jemand aus:

v: Maven 3.2.1

Maven deployt bei mir alte Abhängigkeiten obwohl diese aus der POM.xml raus sind.

z.B. habe ich OmniFaces dependency wieder rausgenommen !! Auch aus lokalem Repo !!

Trotzdem deployt Maven omnifaces.jar immer noch mit in mein WAR-Archiv.
Das geht mir auch so bei anderen 'alten' Abhängigkeiten. Ich habe das gesamte lokale Repo gelöscht und neu 'gezogen'.
Nachdem ich clean install ausgeführt habe befanden sich die alten jars wieder im target-archiv und im lokalen Repo in meinem Projekt. Aber die jars der alten Abhängigkeiten waren nicht im lokalen Repo. Wie kommt das? Weiß jemand weiter, oder was ich noch probieren könnte?

Danke im Voraus
 

PollerJava

Top Contributor
Code:
mvn dependency:tree -Dverbose

und dann kann man mit exclude artefacts excluden bei den dependencies
 
Zuletzt bearbeitet:

kama

Top Contributor
Achso...

Omnifaces ist ja eine Implementierung von JSF wenn ich mich richtig erinnere ...Die Frage ist was Dein Container zur Verfügung stellt ? z.B. Tomcat / Jetty / JBoss / etc. und natürlich prüfen, ob die Abhängigkeit über eine transitive Abhängigkeit reinkommt...dann eventuell ein Exclude reinmachen...

eine Vollständige POM hier zu posten würde helfen, um besser zu sehen wo das Problem ist...


Wenn der Container schon etwas entsprechendes hat, dann muss die Dependency wie folgt definiert werden:
Code:
  <dependency>
    <groupId>...</groupId>
    <artifactId>..</artifactId>
    <version>...</version>
    <scope>provided</scope>
 </dependency>

Dann wird die auch nicht mit in das WAR File eingepackt...

Wenn der Container aber keine Implementierung liefert dann musst Du im WAR File eine Implementierung liefern..

Gruß
Karl Heinz Marbaise
 

BuckRogers

Bekanntes Mitglied
Hallo Leute,

danke für Eure Tipps. Folgendes habe ich mal durchgeführt:

mvn dependency:tree -Dverbose
Ergebnis: Keine Abhängigkeit zu Omnifaces, DeltaSpikes oder Sonstigem, was nicht mehr in den POM-Files beschrieben ist.

Dep.-Tree für das WAR:
HTML:
[INFO] ------------------------------------------------------------------------
[INFO] Building webApplication-war-1.0-SNAPSHOT 1.0-SNAPSHOT
[INFO] ------------------------------------------------------------------------
[INFO] 
[INFO] --- maven-dependency-plugin:2.8:tree (default-cli) @ webApplication-war ---
[INFO] project:webApplication-war:war:1.0-SNAPSHOT
[INFO] +- project:model-jar:jar:1.0-SNAPSHOT:compile
[INFO] |  \- (log4j:log4j:jar:1.2.17:compile - omitted for duplicate)
[INFO] +- project:ordering-ejb:jar:1.0-SNAPSHOT:compile
[INFO] |  +- javax.ejb:javax.ejb-api:jar:3.2:compile
[INFO] |  |  \- javax.transaction:javax.transaction-api:jar:1.2:compile
[INFO] |  +- (project:model-jar:jar:1.0-SNAPSHOT:compile - omitted for duplicate)
[INFO] |  +- javax.inject:javax.inject:jar:1:compile
[INFO] |  \- (log4j:log4j:jar:1.2.17:compile - omitted for duplicate)
[INFO] +- javax.persistence:persistence-api:jar:1.0.2:provided
[INFO] +- junit:junit:jar:3.8.1:test
[INFO] +- javax.servlet:jstl:jar:1.2:compile
[INFO] +- javax.servlet:servlet-api:jar:2.5:compile
[INFO] +- javax.faces:javax.faces-api:jar:2.2:compile
[INFO] +- javax.enterprise:cdi-api:jar:1.2:compile
[INFO] |  +- javax.el:javax.el-api:jar:3.0.0:compile
[INFO] |  +- javax.interceptor:javax.interceptor-api:jar:1.2:compile
[INFO] |  \- (javax.inject:javax.inject:jar:1:compile - omitted for duplicate)
[INFO] +- org.primefaces:primefaces:jar:5.0:compile
[INFO] \- log4j:log4j:jar:1.2.17:compile
[INFO] ------------------------------------------------------------------------
btw... was bedeutet 'omitted for duplicate' ? Ausgelassen da schon eine nähere Dependency im scope ist?

WAR-File WEB-INF/lib:

inflating: WEB-INF/lib/deltaspike-core-impl-1.0.0.jar
inflating: WEB-INF/lib/servlet-api-2.5.jar
inflating: WEB-INF/lib/log4j-1.2.17.jar
inflating: WEB-INF/lib/myfaces-api-2.2.3.jar
inflating: WEB-INF/lib/javax.inject-1.jar
inflating: WEB-INF/lib/javax.ejb-api-3.2.jar
inflating: WEB-INF/lib/javax.el-api-3.0.0.jar
inflating: WEB-INF/lib/geronimo-jcdi_1.0_spec-1.0.jar
inflating: WEB-INF/lib/javax.transaction-api-1.2.jar
inflating: WEB-INF/lib/bootstrap-2.3.2.jar
inflating: WEB-INF/lib/javax.interceptor-api-1.2.jar
inflating: WEB-INF/lib/omnifaces-1.7.jar
inflating: WEB-INF/lib/font-awesome-4.1.0.jar
inflating: WEB-INF/lib/cdi-api-1.2.jar
inflating: WEB-INF/lib/primefaces-5.0.jar
inflating: WEB-INF/lib/deltaspike-core-api-1.0.0.jar
inflating: WEB-INF/lib/jquery-1.9.0.jar
inflating: WEB-INF/lib/geronimo-atinject_1.0_spec-1.0.jar
inflating: WEB-INF/lib/ordering-ejb-1.0-SNAPSHOT.jar
inflating: WEB-INF/lib/javax.faces-api-2.2.jar
inflating: WEB-INF/lib/jstl-1.2.jar
inflating: WEB-INF/lib/model-jar-1.0-SNAPSHOT.jar
inflating: WEB-INF/beans.xml
inflating: WEB-INF/web.xml
inflating: WEB-INF/jboss-web.xml

Das ist die POM für das WAR:
HTML:
<dependency>
            <groupId>project</groupId>
            <artifactId>model-jar</artifactId>
            <version>1.0-SNAPSHOT</version>
        </dependency>

        <dependency>
            <groupId>project</groupId>
            <artifactId>ordering-ejb</artifactId>
            <version>1.0-SNAPSHOT</version>
        </dependency>

        <dependency>
            <groupId>junit</groupId>
            <artifactId>junit</artifactId>
            <version>3.8.1</version>
            <scope>test</scope>
        </dependency>

        <dependency>
            <groupId>javax.servlet</groupId>
            <artifactId>jstl</artifactId>
            <version>1.2</version>
        </dependency>

        <dependency>
            <groupId>javax.servlet</groupId>
            <artifactId>servlet-api</artifactId>
            <version>2.5</version>
        </dependency>

        <dependency>
            <groupId>javax.faces</groupId>
            <artifactId>javax.faces-api</artifactId>
            <version>2.2</version>
        </dependency>

        <dependency>
            <groupId>javax.enterprise</groupId>
            <artifactId>cdi-api</artifactId>
            <version>1.2</version>
        </dependency>

        <dependency>
            <groupId>org.primefaces</groupId>
            <artifactId>primefaces</artifactId>
            <version>5.0</version>
        </dependency>
    </dependencies>

DeltaSpikes sollte schon lange raus sein. Hatte mich nicht dafür entschieden es zu verwenden nach kleinen Tests. Das gleiche gilt auch für andere Abhängigkeiten, welche immernoch im WAR zu finden sind.
Auch im local Maven Repository ist das WAR wie oben hinterlegt.
Ich habe leider keine Ahnung wieso Maven das tut und ob das ein bekanntes Problem ist. Bestimmt habe ich etwas nicht richtig angewendet. Ich bekomm noch Haarausfall vom ewigen Trial&Error
 
Zuletzt bearbeitet:

kama

Top Contributor
Hallo....

am besten wäre, wenn Du mal die vollständige POM Datei zeigen kannst und nicht immer nur Ausschnitte...

Code:
[INFO] project:webApplication-war:war:1.0-SNAPSHOT
[INFO] +- project:model-jar:jar:1.0-SNAPSHOT:compile
[INFO] |  \- (log4j:log4j:jar:1.2.17:compile - omitted for duplicate)
[INFO] +- project:ordering-ejb:jar:1.0-SNAPSHOT:compile
[INFO] |  +- javax.ejb:javax.ejb-api:jar:3.2:compile
[INFO] |  |  \- javax.transaction:javax.transaction-api:jar:1.2:compile
[INFO] |  +- (project:model-jar:jar:1.0-SNAPSHOT:compile - omitted for duplicate)
[INFO] |  +- javax.inject:javax.inject:jar:1:compile
[INFO] |  \- (log4j:log4j:jar:1.2.17:compile - omitted for duplicate)
[INFO] +- javax.persistence:persistence-api:jar:1.0.2:provided
[INFO] +- junit:junit:jar:3.8.1:test
[INFO] +- javax.servlet:jstl:jar:1.2:compile
[INFO] +- javax.servlet:servlet-api:jar:2.5:compile
[INFO] +- javax.faces:javax.faces-api:jar:2.2:compile
[INFO] +- javax.enterprise:cdi-api:jar:1.2:compile
[INFO] |  +- javax.el:javax.el-api:jar:3.0.0:compile
[INFO] |  +- javax.interceptor:javax.interceptor-api:jar:1.2:compile
[INFO] |  \- (javax.inject:javax.inject:jar:1:compile - omitted for duplicate)
[INFO] +- org.primefaces:primefaces:jar:5.0:compile
[INFO] \- log4j:log4j:jar:1.2.17:compile

Das bedeutet, dass das project:webApplication-war eine Abhängigkeit auf project:model-jar hat...weiterhin hat das project:eek:rdering-ejb auch eine Abhängigkeit auf project:model-jar aus diesem Grund die Meldung "omitted for duplicate"...
So project:eek:rdering-ejb hat eine Abhängigkeit auf javax.inject:javax.inject aber es kommt nochmal als Abhängigkeit von javax.enterprise:cdi-api und wird dort als "omitted for duplicate" gemeldet...da es ja schon im Baum ist...

Die Regeln wie transitive Abhängigkeiten etc. geregelt sind steht hier: Maven


Ich sehe hier auch einige grundlegende Fehler. Z.B. javax.servlet:servlet-api hat den Scope compile. Sollte aber "provided" haben...(Im Tomcat gibt es dann beim hochfahren eine entsprechende Meldung).

Einige von den Abhängigkeiten "-api" sollten wahrscheinlich auch scope: provided bekommen ist aber leider nicht immer 100%ig da auch einige in API Artefakte Sachen reinpacken die man dann auch anders wo braucht...muß man im Zweifelsfalle probieren...

Weiterhin fällt mir auf, dass Du die Abhängigkeiten im Projekt selbst wie folgt definierst:
Code:
<dependency>
  <groupId>project</groupId>
  <artifactId>ordering-ejb</artifactId>
  <version>1.0-SNAPSHOT</version>
</dependency>
Man sollte in Multi Module Projekten die Version wie folgt festlegen:
Code:
<dependency>
  <groupId>project</groupId>
  <artifactId>ordering-ejb</artifactId>
  <version>${project.version}</version>
</dependency>
Damit wir sofort klar, dass es eine Inter-Module Abhängigkeit ist...macht die POM's lesbarer...


Tritt das Problem mit den Files im Lib Ordner auf der Kommandozeile per
Code:
mvn clean package
auf? Welche Maven Version wird verwendet? Welche maven-war-plugin version wird verwendet ? Am besten wäre ein vollständiges Projekt, dass das Problem reproduziert ? Kannst du das Projekt irgendwie Online stellen ? Oder eventuell limitiert (Bitbucket private repo) ansonsten ist das recht schwer zu sehen wo das Problem ist ....

Das löschen im lokalen Repository hilft nicht die Abhängigkeiten müssen irgendwo drin sein oder mithilfe von anderen Plugins in das WAR reingepackt werden..
Gruß
Karl Heinz Marbaise
 
Zuletzt bearbeitet:

BuckRogers

Bekanntes Mitglied
Problem gelöst. Habe eine lange Pause gemacht am Projekt. Aber nachdem ich ein paar Stunden rumprobiert habe, fand ich eine Lösung.

Ursache war, dass im Verzeichnis des WEB-Moduls im WEB-INF-Dir ein classes-Dir lag, welches alle alten Klassen beinhaltete. Maven nahm diese Klassen mit in den built. Demnach holte Maven auch alle dazu gehörigen Abhängigkeiten. Verzeichnis wurde gelöscht und das Problem somit behoben.
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
H Maven JUnit5 Tests werden ignoriert Tools - Maven, Gradle, Ant & mehr 5
8u3631984 Hauptklasse konnte nicht gefunden oder geladen werden Tools - Maven, Gradle, Ant & mehr 9
Moman2022 Hauptklasse kann nicht gefunden werden gradle build Tools - Maven, Gradle, Ant & mehr 3
J Jasper Reports - Letzte Daten aus Detailbereich werden in der Variable angezeigt Tools - Maven, Gradle, Ant & mehr 2
P Maven Test werden nicht ausgeführt . Junit . Maven . Surefire . Eclipse Tools - Maven, Gradle, Ant & mehr 12
P Maven & Intellij Modul kann nicht aufgelöst werden Tools - Maven, Gradle, Ant & mehr 12
S Hauptklasse kann nicht geladen werden Tools - Maven, Gradle, Ant & mehr 2
M Maven-Dependency kann nicht gefunden werden Tools - Maven, Gradle, Ant & mehr 2
K Subversion svn & Jenkins - Änderungen werden nicht angezeigt Tools - Maven, Gradle, Ant & mehr 4
O Applet "Anwendung kann nicht ausgeführt werden" Tools - Maven, Gradle, Ant & mehr 6
A Müssen bei Open-Source Software die verwendeten Bibliotheken genannt werden? Tools - Maven, Gradle, Ant & mehr 7
B Maven -D parameter bei release werden ignoriert Tools - Maven, Gradle, Ant & mehr 2
M Jar kann nicht gestartet werden - main Class not found Tools - Maven, Gradle, Ant & mehr 5
DStrohma Webstart Webstart geht nicht da sqljdbc.jar nicht signiert werden kann Tools - Maven, Gradle, Ant & mehr 2
T Webstart: Anwendung konnte nicht gestartet werden. Tools - Maven, Gradle, Ant & mehr 7
J webstart + funpic + kann nicht ausgeführt werden. Tools - Maven, Gradle, Ant & mehr 8
C bilder werden nicht angezeigt Tools - Maven, Gradle, Ant & mehr 3
D Bilder werden nicht geladen Tools - Maven, Gradle, Ant & mehr 21
G Shortcuts werden unter Java 1.6 immer neu erstellt Tools - Maven, Gradle, Ant & mehr 3
P Applet - WAV-Dateien werden nicht abgespielt Tools - Maven, Gradle, Ant & mehr 6
M bilder werden nicht angezeigt! Tools - Maven, Gradle, Ant & mehr 3
M Applets werden nicht ausgeführt Tools - Maven, Gradle, Ant & mehr 3
K Sehr kleine wav Dateien, bis zu 20KB,werden nicht abgespielt Tools - Maven, Gradle, Ant & mehr 3
G Lotto-Zahlgenerator -Applet kann nicht initialisiert werden! Tools - Maven, Gradle, Ant & mehr 28
A wo werden applets genau gespeichert? Tools - Maven, Gradle, Ant & mehr 12
T Applet-JSObject, Object kann nicht gecastet werden??? Tools - Maven, Gradle, Ant & mehr 2
L alte Jar Versionen Tools - Maven, Gradle, Ant & mehr 3
D Interne Dependencies in Maven Tools - Maven, Gradle, Ant & mehr 51
8u3631984 Gradle nicht benötigte Dependencies finden Tools - Maven, Gradle, Ant & mehr 3
T JSON Dependencies in Maven Tools - Maven, Gradle, Ant & mehr 7
von Spotz Gradle: Dependencies und Plugins vom root Projekt für die child-Projekte verfügbar machen Tools - Maven, Gradle, Ant & mehr 5
T Maven: Probleme beim Einbinden der Dependencies Tools - Maven, Gradle, Ant & mehr 9
H Maven Dependencies in runnable Jar einbinden Tools - Maven, Gradle, Ant & mehr 16
P Gradle Dependencies in Module vererben Tools - Maven, Gradle, Ant & mehr 2
X Maven Dependencies beim install mit in die Jar einbinden Tools - Maven, Gradle, Ant & mehr 6
F Maven Umgang mit transitiven Dependencies Tools - Maven, Gradle, Ant & mehr 0
D WFLYCTL0180: Services with missing/unavailable dependencies Tools - Maven, Gradle, Ant & mehr 2
P Maven Parent und Child Poms - dependencies Tools - Maven, Gradle, Ant & mehr 1
eskimo328 Maven Firmen Repository Dependencies nicht über Internet Tools - Maven, Gradle, Ant & mehr 7
N Maven maven dependencies Tools - Maven, Gradle, Ant & mehr 3
A Maven dependencies anderer Projekte automatisch mit deployen Tools - Maven, Gradle, Ant & mehr 6
B Maven JavaDoc + Dependencies Tools - Maven, Gradle, Ant & mehr 3
W Maven / Zugriff auf Test Klassen von Dependencies Tools - Maven, Gradle, Ant & mehr 2
J Maven Assembly-Plugin und Dependencies Tools - Maven, Gradle, Ant & mehr 4
H Maven2 -> Nachladen der Dependencies Tools - Maven, Gradle, Ant & mehr 4
U Maven2 WAR Plugin doppelte Dependencies Tools - Maven, Gradle, Ant & mehr 4

Ähnliche Java Themen

Neue Themen


Oben