106 votes

Comment ajouter un répertoire source supplémentaire pour que maven le compile et l'inclue dans le jar de construction ?

En plus du répertoire src/main/java, j'ajoute un répertoire src/bootstrap que je veux inclure dans mon processus de construction, en d'autres termes, je veux que maven compile et inclue les sources dans ma construction. Comment ?

0 votes

Question simple : Pourquoi ne pas déplacer le code source vers src/main/java ? Ou créer un projet/module maven séparé qui contient le code et le définir comme dépendance.

7 votes

Dans mon cas, j'ai besoin d'ajouter un dossier de sources générées, que je préfère placer dans target.

0 votes

Alternativement, on peut vouloir placer tests d'intégration dans des répertoires autres que src/{main,test}/ comme indiqué ici

158voto

Péter Török Points 72981

Vous pouvez utiliser le Plugin Build Helper par exemple

<project>
  ...
  <build>
    <plugins>
      <plugin>
        <groupId>org.codehaus.mojo</groupId>
        <artifactId>build-helper-maven-plugin</artifactId>
        <version>3.2.0</version>
        <executions>
          <execution>
            <id>add-source</id>
            <phase>generate-sources</phase>
            <goals>
              <goal>add-source</goal>
            </goals>
            <configuration>
              <sources>
                <source>some directory</source>
                ...
              </sources>
            </configuration>
          </execution>
        </executions>
      </plugin>
    </plugins>
  </build>
</project>

1 votes

Est-ce qu'eclipse reconnaît vraiment un tel dossier comme étant l'un des éléments de la base de données de l'entreprise ? buildpath s pour quelqu'un ? Parce que ce n'est pas le cas pour moi. Pour info, j'utilise m2e pour importer le projet.

0 votes

Excellente réponse, juste pour clarifier, vous devez remplacer votre maven-compiler-plugin avec les lignes ci-dessus...

0 votes

Fonctionne également dans IntelliJ.

39voto

Saik0 Points 346

NOTE : Cette solution ne fera que déplacer les fichiers sources java vers le répertoire target/classes et ne compilera pas les sources.

Mettre à jour le pom.xml comme -

<project>   
 ....
    <build>
      <resources>
        <resource>
          <directory>src/main/config</directory>
        </resource>
      </resources>
     ...
    </build>
...
</project>

2 votes

NetBeans l'a récupéré comme un charme :)

1 votes

Il semble que vous deviez supprimer l'exclusion ** pour le dossier ajouté dans le chemin de construction d'Eclipse.

0 votes

@Dormouse pouvez-vous expliquer s'il vous plaît ?

15voto

Kalpesh Soni Points 587

1voto

davidh Points 107

Avec les versions récentes de Maven (3) et la version récente du plugin de compilation de Maven (3.7.0), je remarque que l'ajout d'un dossier source avec l'option build-helper-maven-plugin n'est pas nécessaire si le dossier qui contient le code source à ajouter dans la compilation est situé dans le répertoire de l'utilisateur. target ou un sous-dossier de celui-ci.
Il semble que le plugin maven compilant compile tout code source java situé à l'intérieur de ce dossier quel que soit le répertoire qui les contient.
Par exemple, le fait d'avoir du code source (généré ou non) dans target/a , target/generated-source/foo sera compilé et ajouté dans le répertoire de sortie : target/classes .

-2voto

Arun Points 798

Vous pouvez ajouter les répertoires pour votre processus de construction comme :

    ...
   <resources>
     <resource>
       <directory>src/bootstrap</directory>
     </resource>
   </resources>
   ...

Le chemin src/main/java est le chemin par défaut qui n'a pas besoin d'être mentionné dans le pom.xml.

2 votes

Pourquoi les downvotes ? En gros, la même réponse que celle de saiky0 (qui a des upvotes) mais plus tôt ?

15 votes

@Friso car ce n'est pas correct. L'ajout d'un répertoire de ressources ajoutera des ressources (fichiers copiés sur target/classes mais non compilé). Cette question concerne l'ajout d'un répertoire de sources, qui contient les fichiers qui seront compilés. compilé en target/classes non copié.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X