Avoir une 3e partie jar inclus dans Maven ombragée pot sans l'ajouter à un dépôt local
J'ai déjà trouvé une réponse ici, sur un Débordement de Pile comment inclure une 3ème partie BOCAL dans un projet, sans l'installer sur un "référentiel local":
Puis-je ajouter des pots à maven 2 build classpath sans les installer?
Mais, lorsque j'utilise le Maven Ombre Plugin pour créer un JAR qui contient toutes les dépendances du projet, la 3ème partie JAR n'est pas inclus automatiquement.
Comment puis-je faire le Maven Ombre Plugin d'ajouter un 3ème partie BOCAL dans la ombragée POT?
Que par la réponse obtenu, je l'ai fait travailler. Ce que j'ai fait a été, ajouté ce fragment de code au début de mon pom.xml:
<repositories>
<repository>
<id>repo</id>
<url>file://${basedir}/repo</url>
</repository>
</repositories>
Ensuite ajouté une dépendance pour mon projet, également à pom.xml:
<dependencies>
<dependency>
<groupId>dummy</groupId>
<artifactId>dummy</artifactId>
<version>0.0.0</version>
<scope>compile</scope>
</dependency>
</dependencies>
Puis a couru une ligne de commande pour ajouter un package à 'repo':
mvn org.apache.maven.plugins:maven-install-plugin:2.3.1:install-file
-Dfile=<my-jar>.jar -DgroupId=dummy -DartifactId=dummy
-Dversion=0.0.0 -Dpackaging=jar -DlocalRepositoryPath=`pwd`/repo/
(Pas sûr si le repo chemin doit être un chemin d'accès complet, mais ne veulent pas prendre de risques.)
Le contenu de l'opération sous-répertoire est maintenant:
repo/dummy/dummy/0.0.0/dummy-0.0.0.jar
repo/dummy/dummy/0.0.0/dummy-0.0.0.pom
repo/dummy/dummy/maven-metadata-local.xml
Maintenant, je peux le vérifier dans au contrôle de version, et n'ont pas de local ou distant dépendances.
Vous devez vous connecter pour publier un commentaire.
Oui, parce que le
system
étendue de dépendances sont supposés être toujours présent (c'est exactement ce que lesystem
portée est d'environ) donc ils ne seront pas inclus. Les gens n'ont pas réellement comprendre ce quesystem
portée dépendances sont, ils continuent juste à en abuser (oui, c'est de l'abus), puis avoir des effets secondaires et je me demande pourquoi (comme Brian l'a souligné dans son réponse).J'ai déjà écrit de nombreux, de nombreux, vraiment de nombreux fois à ce sujet ici sur SI et dans 99% des cas,
system
étendue de dépendances doit être évitée. Et je vais répéter ce que le Dépendances Étendues mini-guide dit une fois de plus:Donc, au lieu d'utiliser le
system
champ d'application, soit:install:install-file
. C'est une façon rapide et sale pour obtenir des choses de travail, il pourrait être une option si vous êtes seul, mais il rend votre construire non portable.deploy:deploy-file
. C'est le idéal scénario.S'il vous plaît, arrêtez d'utiliser le
system
portée.system
portée, peut-être le Maven gens devraient faire plus clair qu'il n'est pas une solution pour ajouter de la "aléatoire", dans les dépendances d'une génération. Mais lesystem
champ d'application elle-même est documentée.tools.jar
dans mon assemblée, mais ne peut pas sans faire des folies étapes parce que quelqu'un à maven-assembly-plugin pensé que le "système" portée ne doit pas être inclus, qui est absolue des conneriesclean
phase, comme décrit dans la cette réponse, puis le pot devra être installée. Ce que des problèmes de portabilité peut que provoquer?Le Maven addjars plugin permet de résoudre ce problème - voir
http://code.google.com/p/addjars-maven-plugin/wiki/UsagePage
Utilisé <ressources> pour ma lib avec tous les pots. j'.e: