web-dev-qa-db-fra.com

Maven - Construire avec des dépendances

J'ai téléchargé un code source sur Internet et j'essaie de le construire avec maven. Voici le fichier pom.xml fourni avec le code source:

<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>com.mycompany</groupId>
<artifactId>myArtifact</artifactId>
<packaging>jar</packaging>
<version>1.0-SNAPSHOT</version>
<name>myArtifact</name>
<url>http://maven.Apache.org</url>
<build>
    <plugins>
        <plugin>
            <groupId>org.Apache.maven.plugins</groupId>
            <artifactId>maven-compiler-plugin</artifactId>
            <version>2.0.2</version>
            <configuration>
                <descriptorRefs>
                    <descriptorRef>jar-with-dependencies</descriptorRef>
                </descriptorRefs>
                <archive>
                    <manifest>
                        <mainClass>myArtifact.Main</mainClass>
                    </manifest>
                </archive>
                <source>1.5</source>
                <target>1.5</target>
            </configuration>
        </plugin>
    </plugins>
</build>
<dependencies>
    <dependency>
        <groupId>postgresql</groupId>
        <artifactId>postgresql</artifactId>
        <version>8.4-701.jdbc4</version>
        <scope>compile</scope>
    </dependency>
</dependencies>
</project>

La commande mvn install génère le fichier jar mais je ne parviens pas à exécuter ce fichier en raison des dépendances manquantes (exception de classe non trouvée liée à la dépendance postgresql dans cet exemple).

J'ai remarqué que maven a téléchargé les dépendances correctement (les bibliothèques jar sont toutes dans le répertoire local du référentiel maven) mais mvn install ne copie pas ces bibliothèques dans le fichier jar généré. Comment puis-je faire ceci?

Merci.

22

Supprimez la balise descriptorRefs et l'archive de votre maven-compiler-plugin section.

Afin de générer un JAR avec toutes les dépendances autonomes. Vous devez le mettre dans la section des plugins de construction de votre pom.xml:

<build>
    <plugins>
        <plugin>
            <artifactId>maven-Assembly-plugin</artifactId>
            <configuration>
                <archive>
                    <manifest>
                        <mainClass>
                            com.test.your.main.class.goes.Here
                        </mainClass>
                    </manifest>
                </archive>
                <descriptorRefs>
                    <descriptorRef>jar-with-dependencies</descriptorRef>
                </descriptorRefs>
            </configuration>
        </plugin>
    </plugins>
</build>

Créez le fichier JAR en exécutant ce qui suit à l'invite de commande:

mvn clean compile Assembly:single
18
Neeraj Verma