web-dev-qa-db-fra.com

Maven veut soudainement src/à la place de src/main/java

J'utilise Maven 3.3.3 avec Eclipse Mars et m2e. Hier, j'ai créé un nouveau projet Java et l'ai converti en projet Maven.

Ensuite, le chemin de classe ne contenait que src au lieu du src/main/Java standard. J'étais surpris mais j'ai simplement créé les dossiers manquants et lancé le "Projet de mise à jour" de m2e. Cela n'a pas résolu le problème. m2e a toujours insisté pour utiliser uniquement src.

J'ai donc édité le classpath manuellement pour me retrouver avec l'habituel

src/test/Java
src/test/resources
src/main/Java
src/main/resources

Lorsque j'essaye le "Projet de mise à jour" de m2e maintenant, j'obtiens cette erreur:

Cannot nest 'foo/src/test/Java' inside 'foo/src'. To enable the nesting, exclude 'test/' from 'foo/src'

soupir Je suis ensuite allé à la ligne de commande et j'ai lancé mvn Eclipse:eclipse pour obtenir ce chemin de classe:

src/test/Java
src/test/resources
src
src/main/resources

Maintenant, je suis complètement perplexe. Pourquoi est-ce que ça se passe?

8
Aaron Digulla

Ouvrez votre POM dans l'éditeur de POM et cliquez sur l'onglet "Effective POM". Rechercher sourceDirectory. Vous verrez probablement quelque chose comme ça:

<sourceDirectory>src</sourceDirectory>

Lorsque vous avez converti le projet Java en Maven pour la première fois, m2e a tenté de conserver le même chemin d'accès aux classes. Les projets Java Eclipse ont une présentation différente par défaut. Ils utilisent src/ au lieu de src/main/Java/. Il n'y a pas de dossier de test car les projets Eclipse placent généralement leurs tests dans un autre projet.

Pour résoudre le problème:

  1. Supprimez l'élément sourceDirectory du POM (Remarque: il peut s'agir d'un POM parent).
  2. Aller au projet
  3. Sélectionner tous les dossiers sources
  4. Supprimez-les du chemin de construction (menu contextuel -> Chemin de construction -> Supprimer du chemin de construction).
  5. Mettre à jour le projet

L'erreur devrait maintenant disparaître et le classpath devrait être correct.

27
Aaron Digulla

Vous pouvez créer deux types de dossiers: 1) Package 2) Dossier source

1) Un paquet ressemble à ceci  enter image description here

Pour créer un package, cliquez avec le bouton droit de la souris sur le dossier souhaité (dans mon exemple, j'ai cliqué avec le bouton droit de la souris sur Ressources Java) -> Nouveau -> Package.

 enter image description here

Une fenêtre pop-up ressemblant à ceci devrait apparaître

 enter image description here

"Dossier source:" C'est là que vous choisissez votre projet. Si vous ne voyez rien là-bas, cliquez sur «Parcourir…» et trouvez votre projet. Si je clique sur «Parcourir…», cela montre ceci:

"Nom:" est le nom que vous donnerez à votre colis.

 enter image description here

Remarque: les packages doivent figurer dans les dossiers source. Les dossiers source sont le dossier parent.  

2) Les dossiers source ressemblent à ceci:  enter image description here

Pour créer un dossier source, cliquez avec le bouton droit de la souris sur le dossier souhaité (dans mon exemple, j'ai cliqué avec le bouton droit de la souris sur Ressources Java) -> Nouveau -> Dossier source

 enter image description here

Sous «Nom du projet», écrivez le nom de votre projet. Si vous avez besoin d'aide, cliquez sur "Parcourir ..."

Sous «Nom du dossier», écrivez le nom du dossier souhaité. 

Erreur: Si vous essayez de créer un dossier "src/main/resources" et que vous rencontrez le message d'erreur "Impossible d'imbriquer" NomProjet "dans" NomProjet ". Pour permettre l’imbrication, excluez ‘main /’ de

 enter image description here

Solution:

 --Pic 8--

1
Gene