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 pour src/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.

29
demandé sur igr 2014-04-07 16:49:02

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.

  1. 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épertoire target sera supprimé et la source sera reconstruite.

  2. 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 est generated, 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 supprimer generated 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.

32
répondu Absurd-Mind 2014-04-07 22:05:41

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.

2
répondu bhdrkn 2015-03-14 14:16:58

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.

0
répondu sus007 2014-04-07 13:45:05