9
votes

Comment inclure une seule dépendance dans un pot à l'aide de plug-in Maven et Fatjar

Je me sens un peu stupide sur cette question mais je ne peux pas comprendre comment ajouter une seule dépendance (jdom.jar) dans un autre pot.

Contexte: Nous avons développé un simple plug-in pour notre application, cette Le plug-in a de nombreuses dépendances. Nous utilisions Fatjar pour inclure JDom.jar. J'essaie de corriger un bogue dans ce plug-in, j'ai donc décidé de "Maven-ize" en même temps. (Nous venons de passer à Maven) Ce plug-in est chargé sur le temps d'exécution afin que les seules dépendances que nous souhaitons emballées sont le jdom.jar.

Problème: j'ai trouvé qu'il y avait une bougie Maven Fajar dans! Malheureusement, je n'ai pas pu trouver de documentation et ce plug-in maven ajoutez toutes les dépendances dans le bocal de sortie. Après beaucoup d'essayer, j'ai décidé d'abandonner ce plug-in Fatjar et recherché un autre. J'ai trouvé un jar, ombre, mais après une lecture lisez sur eux, ils ont l'air d'ajouter toutes les dépendances.

Question: Quel serait un moyen simple d'ajouter seulement JDom.jar dans mon pot de plug-in comme ceci: xxx

aussi je ne veux pas modifier le manifeste ou le nom de fichier de sortie de sortie

Merci beaucoup pour votre temps.


0 commentaires

3 Réponses :


0
votes

Pour ce genre d'usage, je suggérerais d'utiliser Maven-Shade-plugin < / a> qui créera un ueber-jar qui peut être contrôlé à bien des égards. Avec le plug-in de l'ombre Vous pouvez exclure les choses vous n'aime pas. Mais cela pourrait être causé par l'utilisation d'un module maven distinct où vous pouvez contrôler les dépendances.


1 commentaires

Merci pour cette réponse. Je savais que j'étais dans la bonne direction, mais nous avons finalement décidé de continuer d'une autre manière. Voir ma réponse.



1
votes

L'utilisation de Maven Shade fonctionnerait bien, un pot aurait également fait le travail. Mais nous avons finalement décidé que l'emballage du JDOM dans notre extension serait une mauvaise pratique.

Donc, nous allons faire cela: P>

|-Root application Folder
 |-Extension Folder
  |-MyExtension.jar
  |-libs Folder
   |-jdom.jar


0 commentaires

20
votes

Il n'y avait pas de réponse ici pour savoir comment utiliser Maven pour inclure un seul fichier jar avec le fichier maven-shader-plugin code>. Il m'a fallu un peu de temps pour comprendre comment faire cela. Voici un extrait pour inclure uniquement les classes de la dépendance com.googlecode.json-simple: JSON-SIMPLET CODE>.

<project>
    ...
    <build>
        <plugins>
            ...
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-shade-plugin</artifactId>
                <version>1.6</version>
                <executions>
                    <execution>
                        <phase>package</phase>
                        <goals>
                            <goal>shade</goal>
                        </goals>
                        <configuration>
                            <artifactSet>
                                <includes>
                                   <include>com.googlecode.json-simple:json-simple</include>
                                </includes>
                            </artifactSet>
                        </configuration>
                    </execution>
                </executions>
            </plugin>
            ...
        </plugins>
    </build>
    ...
</project>


1 commentaires

Exactement ce que je avais besoin et ce stil fonctionne parfaitement même avec la version 2.4.3. J'avais des difficultés avec les différentes variations, mais enfin le au lieu de élaborées.