Comment ajouter un répertoire source supplémentaire pour que maven compile et inclue dans le fichier jar?
95
En plus du 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!?
Question simple: pourquoi ne pas déplacer le code source vers src / main / java? Ou créez un projet / module maven séparé contenant le code et définissez-le comme dépendance.
khmarbaise
7
Dans mon cas, je dois ajouter un dossier de sources généré, que je préfère résider dans la cible.
djjeck
Alternativement, on pourrait vouloir placer les tests d'intégration dans des répertoires autres que src/{main,test}/ceux
Eclipse reconnaît-il vraiment un tel dossier comme l'un des buildpaths pour quiconque? Parce que ce n'est pas pour moi. FWIW, j'utilise m2epour importer le projet.
mystarrocks
Excellente réponse, juste pour clarifier, vous devriez remplacer votre maven-compiler-plugin par les lignes d'en haut ...
Colin
Fonctionne également dans IntelliJ.
Alexander Klimetschek
1
Eclipse m'a demandé d'installer un plugin pour m2e, le connecteur d'aide à la construction. Je l'ai fait et l'erreur de cycle de vie a disparu.
Alexis Dufrenoy
1
Plugin execution not covered by lifecycle configuration: org.codehaus.mojo:build-helper-maven-plugin:1.7:add-source (execution: add-source, phase: generate-sources)obtenir cette erreur
Katie
35
REMARQUE: Cette solution déplacera simplement les fichiers source java vers le répertoire target / classes et ne compilera pas les sources.
Il semble que vous deviez supprimer l'exclusion ** pour le dossier ajouté sur le chemin de construction d'Eclipse :(
Dormouse
@Dormouse pouvez-vous expliquer s'il vous plaît?
Saikat le
1
Ne fonctionne pas avec IntelliJ, il verra <resource>comme dossier "Resource" mais pas comme dossier "Source", par exemple il ne compilera pas les fichiers source Java à l'intérieur.
Alexander Klimetschek
4
Cette solution déplacera simplement les fichiers source java vers le répertoire target / classes et ne compilera pas les sources
Cela remplace le répertoire par défaut src / main / java. Si vous voulez plusieurs répertoires, vous devez également spécifier celui par défaut.
Natix
2
La question est de savoir comment ajouter plusieurs répertoires sources et vous proposez une méthode pour ajouter un seul répertoire source, ce qui est le contraire de ce qui est demandé.
João Matos
1
Avec les versions récentes de Maven (3) et la version récente du plugin de compilateur maven (3.7.0), je remarque que l'ajout d'un dossier source avec le build-helper-maven-pluginn'est pas nécessaire si le dossier contenant le code source à ajouter dans la construction se trouve dans le targetdossier ou un sous-dossier de celui-ci.
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 certains (généré ou non) le code source target/a, target/generated-source/fooseront compilés et ajoutés dans le outputDirectory: target/classes.
Pourquoi les votes négatifs? Fondamentalement, la même réponse que celle de saiky0 (qui a des votes positifs) mais plus tôt?
Friso
15
@Friso parce que ce n'est pas correct. L'ajout d'un répertoire de ressources ajoutera des ressources (fichiers copiés target/classesmais non compilés). Cette question concerne l' ajout d' un répertoire source, qui contient des fichiers qui seront compilés dans target/classes, non copiés.
src/{main,test}/
ceuxRéponses:
Vous pouvez utiliser le plugin Build Helper , par exemple:
la source
buildpath
s pour quiconque? Parce que ce n'est pas pour moi. FWIW, j'utilisem2e
pour importer le projet.Plugin execution not covered by lifecycle configuration: org.codehaus.mojo:build-helper-maven-plugin:1.7:add-source (execution: add-source, phase: generate-sources)
obtenir cette erreurMettre à jour le
pom.xml
as -la source
<resource>
comme dossier "Resource" mais pas comme dossier "Source", par exemple il ne compilera pas les fichiers source Java à l'intérieur.http://maven.apache.org/guides/mini/guide-using-one-source-directory.html
regarde aussi
Maven compile avec plusieurs répertoires src
la source
Avec les versions récentes de Maven (3) et la version récente du plugin de compilateur maven (3.7.0), je remarque que l'ajout d'un dossier source avec le
build-helper-maven-plugin
n'est pas nécessaire si le dossier contenant le code source à ajouter dans la construction se trouve dans letarget
dossier ou un sous-dossier de celui-ci.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 certains (généré ou non) le code source
target/a
,target/generated-source/foo
seront compilés et ajoutés dans le outputDirectory:target/classes
.la source
Vous pouvez ajouter les répertoires pour votre processus de construction comme:
Le src / main / java est le chemin par défaut qu'il n'est pas nécessaire de mentionner dans le pom.xml
la source
target/classes
mais non compilés). Cette question concerne l' ajout d' un répertoire source, qui contient des fichiers qui seront compilés danstarget/classes
, non copiés.