Emplacement des fichiers source générés pour la structure de répertoire maven
Outre le dossier src/main/java
, nous avons un dossier qui contient certaines sources Java générées qui sont requises pour les sources principales. La génération de Code est appelée manuellement , si nécessaire. La source générée est cochée dans le référentiel source. Tout sera construit et emballé Ensemble .
Quel serait le meilleur emplacement pour les sources Java générées qui vont être compilées avec les sources principales? Devrait-il être:
-
/src/generated/java
(suivant la même logique de nommage poursrc/testInt/java
pour les tests d'intégration) -
/generated-src/main/java
(en collision avec "le répertoire src contient tout le matériel source pour la construction du projet") -
/src/main/generated-java
(bien...generated-java
n'est pas un type) - ...?
, La première option semble être la plus appropriée pour ce cas. Qu'en penses-tu? Y a-t-il quelque chose dans Maven docs qui décrit cette situation (que j'ai négligée)? Connaissez-vous un repo avec similaire structure?
Merci.
Réponse
Comme suggéré par @ Absurd-Mind, la direction à laquelle nous pensons est de diviser la source en sous-modules (ce qui fonctionne bien dans gradle). Ainsi, la source générée et une autre source connexe iront dans son propre sous-module (ils produiront l'artefact séparé) et le reste ira dans un autre sous-module, qui utilise celui-ci. Merci.
3 réponses
Je pense que l'emplacement dépend de la façon dont la source est générée et gérée.
Le code source est généré automatiquement durant le processus de compilation: Alors je voudrais utiliser
target/main/java/
,target/test/java/
et ainsi de suite. Ce code n'est pas vérifié dans CVS puisque vous pouvez le reconstruire assez facilement. Si vous nettoyez votre projet, le répertoiretarget
sera supprimé et la source sera reconstruite.Le code source est généré manuellement par un outil externe ou similaire: je voudrais utiliser
generated/src/main/java/
,generated/src/test/java/
,generated/src/main/resources/
et ainsi de suite. Ce code devrait être vérifié. Un avantage est, dès que vous voyez que le nom du répertoire de niveau supérieur estgenerated
, Vous savez que tous les fichiers / répertoires ci-dessous sont également générés. Vous avez également la structure de répertoire Maven standard sous le répertoire de niveau supérieur. Un autre point est que le nettoyage est facile, il suffit de supprimergenerated
et de le recréer, sans regarder dans de nombreux autres répertoires (comme dans votre exemple:src/main/generated-java
et src / test / generated-java).
EDIT: une Autre bonne solution serait de créer un projet maven qui ne contient que la source générée comme myproject-generated-1.0.3.jar
. Ce projet serait une dépendance dans votre application réelle. Ensuite, vous mettriez simplement votre source générée int src/main/java
.
Autant que je sache, il n'y a pas de structure de dossiers standard pour les sources générées. Dans mes projets, je préfère src/gen/java
type de notation.
Dans le magasin de fichiers source du projet Maven à l'intérieur src/main/java
, src/main/resources
et le magasin de classe de test à l'intérieur de src/test/java
. Dans Maven généré (code de compilation) code stocké dans le dossier cible. Lorsque vous construisez votre projet maven tout le code généré à mettre à jour dans le dossier cible.