Maven Abhängigkeiten verwalten
1. Wie sind die Bibliothek im Maven abhängig voneinander?
Maven ist ein nutzliches Instrument, damit Sie die Welt für die Open Source Code im Java lernen können. Aber Sie verstehen manchmals Maven nicht um es zu steuern. So erscheinen einige unerklärten Fehler
Im Dokument führe ich Sie, wie sollen wir machen, um die Duplikate der Bibliothek im Maven zu vermeiden
Sehen Sie die Inhalt von einer File pom.xml um mehr zu verstehen
pom.xml
<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/maven-v4_0_0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>org.o7planning</groupId>
<artifactId>SimpleMavenWebApp</artifactId>
<packaging>war</packaging>
<version>0.0.1-SNAPSHOT</version>
<name>SimpleMavenWebApp Maven Webapp</name>
<url>http://maven.apache.org</url>
<dependencies>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>3.8.1</version>
<scope>test</scope>
</dependency>
<!-- JSTL Library -->
<!-- http://mvnrepository.com/artifact/org.glassfish.web/javax.servlet.jsp.jstl -->
<dependency>
<groupId>org.glassfish.web</groupId>
<artifactId>javax.servlet.jsp.jstl</artifactId>
<version>1.2.4</version>
</dependency>
</dependencies>
<build>
<finalName>SimpleMavenWebApp</finalName>
</build>
</project>
Auf die oben File pom.xml haben Sie die Benutzung der Bibliothek javax.servlet.jsp.jstl angemeldet. Die Bibliothek ist abhängig von jstl-api. Und jstl-api sind abhängig von 2 Bibliothek servlet-api und jsp-api. Die Abhängigkeit ist gleich wie das folgende Beispiel
Auf die Eclipse können Sie den Baum, der diese Abhängigkeit darstellt
Die benutzten Bibliotheke sind die Bibliothek, die Sie mit Maven und die abhängigen Bibliothek melden.
2. Die Überlappung der Bibliothek entwerfen
Die Anmeldung der Bibliothek in Maven kann die Duplikat der Bibliothek verursachen. Zum Beispiel Sie melden die Benutzung der Bibliothek A und B mit Maven. A ist abhängig von C und D. B ist abhängig von C und E. Dann C ist eine Wiederholung. Sie können das unten Beispiel sehen.
Das Beispiel zeigt, dass 2 Version der Bibliothek C benutzt werden. Das kann den Fehler bei der Operation der Applikation verursachen. Sie sollen konfigurieren um eine der 2 Version von der Bibliothek C zu löschen. Normalerweise löschen Sie die alte Version.
Benutzen Sie <exclusions> um die abhängigen Bibliothek, die Sie nicht benutzen möchten, zu löschen
Benutzen Sie <exclusions> um die abhängigen Bibliothek, die Sie nicht benutzen möchten, zu löschen
<dependencies>
<dependency>
<groupId>aa</groupId>
<artifactId>A</artifactId>
<version>1.1</version>
</dependency>
<dependency>
<groupId>bb</groupId>
<artifactId>B</artifactId>
<version>1.1</version>
<exclusions>
<exclusion>
<artifactId>C</artifactId>
<groupId>cc</groupId>
</exclusion>
</exclusions>
</dependency>
</dependencies>
Das Instrument von Eclipse unterstützt Sie bei der Entdeckung der Wiederholung und dem Löschen der Wiederholung. Sehen Sie ein Beispiel
pom.xml
<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/maven-v4_0_0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>org.o7planning</groupId>
<artifactId>SimpleMavenWebApp</artifactId>
<packaging>war</packaging>
<version>0.0.1-SNAPSHOT</version>
<name>SimpleMavenWebApp Maven Webapp</name>
<url>http://maven.apache.org</url>
<dependencies>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>3.8.1</version>
<scope>test</scope>
</dependency>
<!-- Servlet API - Servlet Library -->
<!-- http://mvnrepository.com/artifact/javax.servlet/javax.servlet-api -->
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>javax.servlet-api</artifactId>
<version>3.1.0</version>
<scope>provided</scope>
</dependency>
<!-- JSTL Library -->
<!-- http://mvnrepository.com/artifact/org.glassfish.web/javax.servlet.jsp.jstl -->
<dependency>
<groupId>org.glassfish.web</groupId>
<artifactId>javax.servlet.jsp.jstl</artifactId>
<version>1.2.4</version>
</dependency>
</dependencies>
<build>
<finalName>SimpleMavenWebApp</finalName>
</build>
</project>
Klicken Sie die Rechtmaustaste in die Bibliothek, die gelöscht werden soll, wählen Sie dann Exclude Maven Artifact...
Eclipse wird die Code <exclusions> in die File pom.xml automatisch ergänzen
Jetzt hat Ihre File pom.xml keine Wiederholung der Bibliothek:
Anleitungen Maven
- Installieren Sie Maven für Eclipse
- Die Anleitung zum Maven für den Anfänger
- Maven Abhängigkeiten verwalten
- Erstellen Sie ein Multiple-Modul-Projekt mit Maven
- Führen Sie die Maven Java-Webanwendung im Tomcat Maven Plugin aus
- Führen Sie die Maven Java-Webanwendung im Jetty Maven Plugin aus
- Installieren Sie Tycho für Eclipse
- Erstellen Sie ein Java OSGi-Projekt mit Maven und Tycho
- Erstellen Sie ein Empty Maven Web App Project in Eclipse
- Einbindung von OSGi und AspectJ
Show More