it-swarm.com.de

Speicherort der generierten Quelldateien für die Maven-Verzeichnisstruktur

Neben dem src/main/Java-Ordner haben wir einen Ordner, der einige generierte Java-Quellen enthält, die für die Hauptquellen erforderlich sind. Die Codegenerierung wird bei Bedarf manuell aufgerufen. Die generierte Quelle ist geprüft im Quell-Repo. Alles wird gebaut und verpackt zusammen.

Was wäre der beste Ort für generiertes Java sources, das zusammen mit Hauptquellen kompiliert wird? Sollte es sein:

  • /src/generated/Java (folgt der gleichen Benennungslogik für src/testInt/Java für Integrationstests)
  • /generated-src/main/Java (in Kollision mit "Das src-Verzeichnis enthält das gesamte Quellmaterial zum Erstellen des Projekts")
  • /src/main/generated-Java (gut ... generated-Java ist kein Typ)
  • ...

Die erste Option scheint für diesen Fall die geeignetste zu sein. Was denkst du? Gibt es in Maven-Dokumenten etwas, das diese Situation beschreibt (die ich übersehen habe)? Kennen Sie ein Repo mit ähnlicher Struktur?

Vielen Dank.

Antworten

Wie von @ Absurd-Mind vorgeschlagen, besteht die Richtung, in der wir nachdenken, darin, die Quelle in Submodule aufzuteilen (was in Gradle Nizza funktioniert). Die generierte Quelle und einige andere verwandte Quellen werden also in ihr eigenes Submodul aufgenommen (sie erzeugen das separate Artefakt) und der Rest wird in ein anderes Submodul gehen, das dieses verwendet. Vielen Dank.

30
igr

Ich denke, der Ort hängt davon ab, wie die Quelle generiert und behandelt wird.

  1. Der Quellcode wird automatisch während des Erstellungsprozesses generiert : Dann würde ich target/main/Java/, target/test/Java/ und so weiter verwenden. Dieser Code wird nicht in CVS eingecheckt, da Sie ihn relativ einfach wiederherstellen können. Wenn Sie Ihr Projekt bereinigen, wird das Verzeichnis target entfernt und die Quelle wird neu erstellt.

  2. Der Quellcode wird manuell von einem externen Tool oder einem ähnlichen Tool generiert. : Ich würde generated/src/main/Java/, generated/src/test/Java/, generated/src/main/resources/ und so weiter verwenden. Dieser Code sollte eingecheckt werden. Ein Vorteil ist, sobald Sie sehen, dass der Verzeichnisname der obersten Ebene generated ist, wissen Sie, dass alle darunter liegenden Dateien/Verzeichnisse ebenfalls generiert werden. Außerdem haben Sie die Standardverzeichnisstruktur für Maven unter dem Verzeichnis der obersten Ebene. Ein weiterer Punkt ist, dass die Bereinigung einfach ist. Löschen Sie einfach generated und erstellen Sie sie neu, ohne durch viele andere Verzeichnisse zu blättern (wie in Ihrem Beispiel: src/main/generated-Java und src/test/generated-Java).

EDIT: Eine weitere Lösung von Nice wäre das Erstellen eines Maven-Projekts, das nur die generierte Quelle wie myproject-generated-1.0.3.jar enthält. Dieses Projekt wäre eine Abhängigkeit in Ihrer realen Anwendung. Dann würden Sie einfach Ihre generierte Quelle in src/main/Java setzen.

34
Absurd-Mind

Soweit ich weiß, gibt es keine Standardordnerstruktur für generierte Quellen. In meinen Projekten bevorzuge ich src/gen/Java Art der Notation.

3
bhdrkn

Im Maven-Projektquellendateispeicher in src/main/Java, src/main/resources und Testklassenspeicher in src/test/Java. In Maven generierter Code (Code kompilieren), der im Zielordner gespeichert ist. Wenn Sie Ihr Maven-Projekt erstellen, wird der generierte Code im Zielordner aktualisiert.

0
sus007