web-dev-qa-db-fra.com

Comment ajouter un répertoire source supplémentaire à compiler et à inclure dans le jar de construction de maven?

En plus de 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 présentes dans ma construction. Comment!?

91
chrisapotek

Vous pouvez utiliser le Build Helper Plugin , par exemple:

<project>
  ...
  <build>
    <plugins>
      <plugin>
        <groupId>org.codehaus.mojo</groupId>
        <artifactId>build-helper-maven-plugin</artifactId>
        <version>1.7</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>
129
Péter Török
11
Kalpesh Soni

Avec les versions récentes de Maven (3) et la version récente du plugin du compilateur maven (3.7.0), je remarque que l’ajout d’un dossier source avec le fichier build-helper-maven-plugin n'est pas requis si le dossier contenant le code source à ajouter à la construction se trouve dans le dossier target ou dans un de ses sous-dossiers.
Il semble que le plugin maven du compilateur compile tout code source Java) situé dans ce dossier, quel que soit le répertoire qui les contient.
Par exemple, 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.

1
davidxxx

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

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

Src/main/Java est le chemin par défaut qu'il n'est pas nécessaire de mentionner dans pom.xml

0
Arun