Maven GUERRE de la dépendance ne peut pas résoudre paquet?
J'ai une guerre de dépendance:
<dependency>
<groupId>my.package</groupId>
<artifactId>myservices</artifactId>
<version>0.3</version>
<type>war</type>
</dependency>
Maintenant, ce qui existe dans mon dépôt local, et la classe existe à WEB-INF/classes/my/package/myservices
. Quand je vais à utiliser myservices
, cependant, je reçois des colis my.package
n'existe pas. Intelli-J sait changer myservices
en my.package.myservices
, mais en essayant de import
semble ne pas fonctionner du tout.
Est-il quelque chose de spécial que je dois faire avec cette guerre de dépendance?
Fonctionne lorsque vous générez à partir de la ligne de commande? (par exemple,
Nope. Il ne le fait pas.
réalisé j'ai peut-être parti sur une tangente. Je pense que @seanpatrickfloyd est droit. Si vous souhaitez utiliser le fichier war comme la dépendance, alors je vais essayer d'utiliser maven assembly plugin pour voir si ça aide. Encore une fois désolé de ne pas la recherche suffisante sur la réponse.
Avez-vous vérifier cela.maven.apache.org/plugins/maven-war-plugin/faq.html#attached
Si j'utilise le sentier de la guerre plugin, je peux construire à partir de la ligne de commande, mais l'Ide, vous ne pouvez pas voir les fichiers de classe.
mvn install
?)Nope. Il ne le fait pas.
réalisé j'ai peut-être parti sur une tangente. Je pense que @seanpatrickfloyd est droit. Si vous souhaitez utiliser le fichier war comme la dépendance, alors je vais essayer d'utiliser maven assembly plugin pour voir si ça aide. Encore une fois désolé de ne pas la recherche suffisante sur la réponse.
Avez-vous vérifier cela.maven.apache.org/plugins/maven-war-plugin/faq.html#attached
Si j'utilise le sentier de la guerre plugin, je peux construire à partir de la ligne de commande, mais l'Ide, vous ne pouvez pas voir les fichiers de classe.
OriginalL'auteur Stefan Kendall | 2011-04-08
Vous devez vous connecter pour publier un commentaire.
Il ne fonctionne tout simplement pas de cette façon. la guerre des fichiers ne sont pas censés être mis sur le chemin de la classe, mais déployé sur les serveurs d'applications (ou des conteneurs de servlet) qui peuvent faire face à leur structure particulière.
Bien sûr, vous pouvez probablement trouver un classloader personnalisé quelque part qui peut traiter avec java fichiers war, mais c'est juste pas la façon de le faire.
Garder votre code dans un bocal, inclure le pot dans votre guerre et dans cette application. Mais n'utilisez pas une guerre comme une dépendance, sauf si vous créez un fichier EAR.
Je suis en utilisant le graal maven-installer le plugin, qui s'appuie guerres que, malheureusement. Je n'ai vraiment pas besoin de toute la guerre, et je préfère le pot en fait.
OriginalL'auteur Sean Patrick Floyd
Comme l'a fait remarquer dans l'autre répond:
Toutefois, si pour quelque raison vous ne pouvez /voulez pas diviser la GUERRE de projet, vous pouvez également indiquer à Maven que vous avez besoin d'un POT de l'artefact en plus de la GUERRE. Mettre dans le POM de votre GUERRE de projet:
Puis, lors de la construction de la GUERRE de projet Maven va créer une GUERRE et un BOCAL.
Source: Maven Guerre FAQ du plugin
Adapté de doc_180 du commentaire, de sorte qu'il ne perde pas de vue.
<attachClasses>
, vous devrez également ajouter<classifier>classes</classifier>
dans la dépendance de déclaration pour laquelle vous faites référence à la jarre.Merci. Cela m'a aidé à l'aide d'un collègue et il m'a valu un couple de bières.
OriginalL'auteur sleske
GUERRE dépendances sont gérées de façon TRÈS différente par Maven à partir de POT de dépendances. Ils sont traités comme des superpositions.
http://maven.apache.org/plugins/maven-war-plugin/overlays.html
Je pense que ce que vous recherchez est quelque chose d'un peu différent d'une GUERRE de superposition. La GUERRE des superpositions de fusionner les structures de fichier avec un "plus proche gagne" modèle, mais cela signifie que des choses comme web.xml sont remplacés par le plus proche gagne, pas fusionné.
Si vous voulez la fusion (qui est plus proche de ce que la plupart des gens pensent quand ils commencent à parler de la GUERRE des dépendances), vous devriez regarder la Cargaison uberwar plugin.
http://cargo.codehaus.org/Merging+GUERRE+les fichiers
Si votre but est simplement de partager certaines classes, entre les deux Guerres, vous devriez probablement juste de mettre les classes dans un POT de projet. Maven en particulier est vraiment conçu pour fonctionner sur un pom.xml -> un seul artefact modèle (JAR/WAR/etc). En essayant de prendre un seul pom.xml et l'ont émettent, par exemple, un POT pour certains trucs et d'une GUERRE pour d'autres trucs va être très douloureux.
D'ailleurs, si vous travaillez sur une équipe de plus de une personne, vous allez vouloir un artefact de gestion de serveur assez rapide (par exemple, Artifactory, Nexus ou Archiva) ou vous irez fou de traiter avec ce genre de choses. 😉
Ah. Ouais, c'est encore un nouvel artefact ça va être TRÈS dur à obtenir que cela fonctionne avec la GUERRE des dépendances. Peut-essayez gant à juste entrouvrir la GUERRE, d'arracher les trucs dont vous avez besoin et les reconditionner ce dont vous avez besoin comme un POT.
OriginalL'auteur Will Iverson
Dans une GUERRE, les classes doivent être situés à
WEB-INF/classes/...
pas àclasses/...
.De toute façon je n'ai jamais essayé de faire référence à d'autres classes d'une GUERRE (pas de POT), et je ne sais pas si c'est possible.
OriginalL'auteur Ralph
Assurez-vous que la dépendance est installée dans votre dépôt local.
Le local pensions devrait ressembler à:
Si ce n'est pas le cas, installez la guerre dans le dépôt local avant de l'utiliser dans la dépendance:
OriginalL'auteur Arpit