Comment dire à Maven d'inclure le pot de dépendance, de ne pas le sous-projet de répertoire source dans Eclipse?
J'utilise Apache Maven pour gérer mes libs Java (jar) et certains de projets qui utilisent la libs. Pour le confort, j'utilise mvn eclipse:eclipse
pour générer projet Eclipse fichiers qui peut être importé dans workspace Eclipse pour l'édition.
Problèmes surviennent lorsque j'ai modifier le projet principal et Java lib projets dans le même workspace Eclipse. C'est, mvn eclipse:eclipse
comprend src chemin de la dépendance dans .classpath
fichier, pas le jar
dépendance comme prévu.
Dire que j'ai un Jave lib projet nommé mylib
. Le correspondant de fichier jar mylib.jar
a été déployé à un privé repo Maven maintenu par moi. Afin d'utiliser mylib.jar dans le projet principal, la dépendance suivant est inclus dans pom.xml
.
<!-- pom.xml for the main project -->
<dependency>
<groupId>namespace.my</groupId>
<artifactId>mylib</artifactId>
<version>[1.0, )</version>
</dependency>
mvn compile
et mvn test
travail parfait, dans lequel mylib.jar
est automatiquement téléchargé à partir de mon repo. Toutefois, lorsque vous essayez mvn eclipse:eclipse
, je trouve le générés .classpath
fichier n'inclut pas mylib.jar
dépendance comme prévu. Au lieu de cela, il inclut le répertoire du fichier source pour mylib comme suit.
<!-- .classpath file generated by mvn eclipse:eclipse -->
<classpathentry kind="src" path="/mylib"/>
Il semble que Maven lit Eclipse et métadonnées trouve mylib et le projet principal coexits dans le même espace de travail. Donc maven comprend la source, pour mon bien. Merde. Comment puis-je indiquer à maven d'ignorer le projet local de la source et il suffit d'inclure le fichier jar?
Parce que je me sens à l'aise pour taper des commandes dans la console -- compilation, test, l'emballage sont tous fait en une seule commande. En outre, utile de configuration des segments dans pom.xml peut être facilement réutilisés dans d'autres projets. Eclipse est bon, mais trop de menus ainsi que de nombreux plugins look compliqué pour moi.
Les deux ne sont pas nécessairement mutuellement exclusifs, même si que vous auriez à renoncer à la Maven plugin Eclipse pour utiliser m2e. Je trouve Eclipse pratique pour le débogage et m2e garantit que le processus de construction est aussi semblable que possible à l'intérieur et à l'extérieur de l'Éclipse.
Ils mutuellement exclusives, vous ne pouvez pas utiliser les deux ensemble. m2e est vraiment génial (comme m2e-wtp), mais peut être une vraie douleur lorsque vous avez les plugins configurés qu'il ne peut pas gérer et qu'il pollue votre pom avec "cycle de vie des mappings". Le maven plugin eclipse est rapide et simple, mais fait le travail.
OriginalL'auteur Jianwen W. | 2012-09-25
Vous devez vous connecter pour publier un commentaire.
Je crois que c'est en fait parce qu'ils sont liés à des projets dans Eclipse. Donc, si vous faites un clic droit sur votre projet principal et aller à
Project References
votre lib projet doit être cochée.Si vous exécutez
mvn eclipse:eclipse
il va automatiquement ajouter des références de projet pour tous les sous-projets (modules). Vous pouvez changer cela avec la useProjectReferences propriété de l'maven plugin eclipse.La valeur par défaut est
true
, maisL'utilisation de la propriété de l'ensemble de la propriété dans votre pom.xml
Ou comme une propriété sur la ligne de commande:
OriginalL'auteur James Bassett
J'ai besoin pour éviter d'inclure la dépendance comme un refrenced projet, mais comme un pot.
À l'aide d'Eclipse 4.6 Néon aucune de ces solutions ne fonctionne.
J'ai dû désactiver le
Workspace Resolution
fonctionMerci!!!! Il a travaillé pour moi.
OriginalL'auteur Panciz
Merci pour Chien de chasse avec des indications. Oui, useProjectReferences commandes Maven comment gérer les sous-projets, y compris la source de dir ou y compris les fichiers jar.
Je n'ai pas installé le plugin maven pour Eclipse, j'ai donc ajouter la configuration suivante dans
pom.xml
. Il raconte Maven pour inclure pot de dépendance dans les locaux repo maven, pas la source dir. Si le fichier jar requis n'est pas présent dans les locaux de pensions, il sera téléchargé automatiquement à la volée.Maintenant
mvn eclipse:eclipse
fonctionne comme prévu.OriginalL'auteur Jianwen W.
Simplement essayer d'utiliser le type de l'élément à l'intérieur de la dépendance de la balise et de mentionner la source/jar que le type de votre pom.xml
OriginalL'auteur Metalhead
J'ai récemment fait l'expérience que ce comportement est déclenché par la version indiquée dans le pom.xml les fichiers. Si la version de la lib de votre projet principal est en fonction est à la disposition de l'éclipse dans l'espace de travail (par exemple, un projet avec la mise en correspondance pom.xml [groupe,artefact,version] pour le lib) il sera utilisé comme une référence de projet à la place du tiré à partir du M2REPO-emplacement.
Ma solution a été de changer la version de la bibliothèque pom.xml dans l'espace de travail à l'autre version me permettant d'améliorer la lib, tandis que le principal projet encore tiré les anciens lib de M2REPO.
À l'aide de ce en alignant les numéros de version vous permet d'effectuer simultanées artefact améliorations/modifications sans tracas.
Je n'ai pas encore testé si vous avez besoin pour exécuter le
mvn eclipse:eclipse
chaque fois que vous changez la lib pom.xml les fichiers et les primaires pom.xml dépendances, mais je m'attends à ce que cela soit ainsi.OriginalL'auteur JBWanscher
J'ai essayé de fermer le projet dans eclipse & l'espace de travail tout construit lui-même, cette fois en prenant le pot de l'référentiel au lieu de lier le projet
OriginalL'auteur Sagar Mhatre