2013-01-13 2 views
1

J'ai besoin de sortir ma build dans un répertoire différent de target.m2e ignore le répertoire testOutputDirectory pour les ressources de test

Utilisation du project.build.directory, sortie et propriétés testOutputDirectory fonctionne correctement à partir de la ligne de commande à l'aide mvn clean install, mais quand je construis de l'éclipser crée un répertoire target/test-classes vide si j'ai un répertoire src/test/resources.

Un fichier pom simple qui a le même comportement ressemble à:

<project> 
    <groupId>com.example</groupId> 
    <version>1.0.0</version>  
    <modelVersion>4.0.0</modelVersion> 
    <artifactId>reproduce</artifactId> 
    <packaging>war</packaging> 
    <properties> 
     <project.build.directory>differentTarget</project.build.directory> 
     <project.build.outputDirectory>${project.build.directory}/classes</project.build.outputDirectory> 
     <project.build.testOutputDirectory>${project.build.directory}/different-test-classes</project.build.testOutputDirectory> 
    </properties> 

    <build> 
     <directory>${project.build.directory}</directory> 
     <outputDirectory>${project.build.outputDirectory}</outputDirectory> 
     <testOutputDirectory>${project.build.testOutputDirectory}</testOutputDirectory> 
    </build> 
</project> 

Ma structure de répertoire ressemble:

|-src 
    |---main 
    |-----webapp 
    |-------WEB-INF 
    |---test 
    |-----resources 

La façon la plus simple que je peux reproduire le comportement est à tous les répertoires vides sauf pour un web.xml avec <web-app /> à l'intérieur.

Lorsque j'ai des classes de test réelles, il crée des dossiers dans le répertoire target/test-classes, puis place les fichiers de classe réels dans differentTarget/test-classes.

J'utilise Eclipse Indigo, M2e 1.2.0 et Intégration Maven pour WTP 0.15.3 sur Debian

Modifier

Si je supprime le properties et dur coder les sorties:

<build> 
    <directory>differentTarget</directory> 
    <outputDirectory>differentTarget/classes</outputDirectory> 
    <testOutputDirectory>differentTarget/different-test-classes</testOutputDirectory> 
</build> 

Puis-je obtenir le comportement correct quand je vais Maven> Mise à jour du projet ... mais je reçois toujours le dossier cible incorrect quand je vais Project> Clean ou plus important encore avoir sur automatiquement Construire.

+0

Avez-vous essayé [cette] approche (http://www.youtube.com/watch?v=oHg5SJYRHA0)? –

+1

J'ai vu cela dans quelques autres endroits mais ce n'était pas utile dans ce cas. – n00begon

Répondre

2

Essayez de vérifier vos dossiers de sortie pour votre chemin de compilation Java. Le module m2e peut ne pas mettre à jour tous les chemins de sortie:

Cliquez avec le bouton droit de la souris sur votre projet -> Chemin de génération -> Configurer le chemin de génération.

Dans l'onglet Source, développez chaque entrée, modifiez le dossier de sortie et redéfinissez chacun d'entre eux sur le projet par défaut.

+0

Cela l'a corrigé. Il avait 'target/test-classes' comme dossier de sortie – n00begon

1

Par défaut, tous les POM Maven héritent du Super POM. Si vous regardez le Maven Super POM, vous pouvez voir testOutputDirectory est défini comme un élément sous projet/construction. Je ne suis pas sûr si vous vouliez le définir comme une propriété. Essayez de remplacer l'élément <testOutputDirectory> directement sous <build> section

+0

Si je supprime les propriétés et que j'utilise ** testOutputDirectory ** directement, j'obtiens le même comportement ' differentTarget/different-test-classes' – n00begon

1

Parfois, m2e ne capte pas les modifications.

Alors sélectionnez votre projet, faites un clic droit de la souris -> Maven -> Mettre à jour le projet.

enter image description here

Si cela ne fonctionne pas, supprimez le dossier .settings et essayez à nouveau.

Edit:

Peut-être qu'il ne peut pas traduire les propriétés utilisées dans la section de construction. Essayez en codage en dur:

<build> 
    <directory>differentTarget</directory> 
    <outputDirectory>differentTarget/classes</outputDirectory> 
    <testOutputDirectory>differentTarget/different-test-classes</testOutputDirectory> 
</build> 
+0

Merci, j'ai essayé les deux mais j'ai toujours le même résultat. Même si je n'ai que des répertoires vides à l'exception du fichier web.xml et que je l'importe en tant que nouveau projet, cela donne le même comportement. – n00begon

+0

Essayez d'utiliser des valeurs codées en dur dans votre section build (voir edit) – asgoth

+0

J'ai essayé cela pour @gerrytan réponse et malheureusement, il donne toujours le même résultat de créer un dossier cible. – n00begon

Questions connexes