Maven Namenskonventionen für hierarchische multiple-module-Projekten

Ich habe eine Frage, auf die Maven-Konventionen (groupId, artifactId und Verzeichnis-Namen) in eine mehrfach-Modul-Projekt mit einem hierarchischen Verzeichnis structrure.

Forschung

Bevor Sie Fragen, ich ging durch andere im web über dieses Thema und was ich konnte für mich selbst heraus:

  1. Möglich ist die Vervielfältigung für meine Frage, aber es erstreckt sich nicht auf mehrere Hierarchie-Ebenen.

  2. Projekt-Verzeichnis Namen sollten übereinstimmen
    artificatId
    .

  3. Leitfaden für Namenskonventionen
    Beispiele:

    • groupId identifizieren Sie Ihr Projekt eindeutig über alle Projekte, so müssen wir erzwingen ein Namensschema. Es Folgen der name des Pakets Regeln (zB. org.apache.maven, org.apache.commons org.apache.maven.plugins)

    • artifactId, Wenn Sie es erstellt haben, dann können Sie wählen, welchen Namen Sie wollen mit Kleinbuchstaben und keine seltsamen Symbolen.
      (zB. maven, commons-math)

Dies ist ganz einfach und ich verstehe es, aber es gibt nur wenige Dinge, die sind noch unklar.

artifactId Beispiele erwähnt, in Konventionen können nur angewandt werden, um ein-level-Hierarchie-Modul.

Beispiele

Ging ich über maven-repositories und extrahiert einige Beispiele:

Frühling meist verwendet Namen: spring-core, spring-context -, spring-Kontext-zu unterstützen. Alle standalone-Module sind mit einer level-Hierarchie und-Feder - Präfix für die Suche nach Effizienz. Es gibt keine Probleme, da die Hierarchie ist nicht tief.

Apache CXF Bezeichnungen sind Recht unkonventionell für Apache. Artefakte sind eigenständige Module mit bis zu 5 möglichen unterschiedlichen Artefakte im Namen zB. cxf-tools-wsdlto-databinding-jaxb.

Gibt es viele Artefakte (cxf-rt-databinding-jaxb, cxf-rt-databinding-aegis, cxf-rt-databinding-xmlbeans, cxf-rt-databinding-sdo), die zusammengefasst werden können in mehreren Modulen Projekt (cxf-rt-databindings), hat Sie aber nicht und so die Namen wurden spaghetti.

Schließlich Maven-Plugins ist zunächst eine aus mehreren Modulen Projekt (nach org.apache.maven), die Artefakte wie: maven-compiler-plugin, maven-enforcer-plugin.

Es gibt durchaus eine Menge Beispiele-und die Folgen alle anderen Konventionen über die Benennung artifactIds (daher Projekt-Verzeichnisse).

Ausgang

Einnahme von best practices aus den Beispielen lassen Sie uns betrachten, Hierarchie-Ebenen.

Einer Hierarchieebene benennen wäre (

groupId:    org.organization.project
artifactId: project-portal ---.
                              |
                              project-portal-service
                              |
                              project-portal-plugins (continued on next diagram)
                              |
                              project-portal-util

(Fortsetzung) zwei-Ebenen-Hierarchie wäre:

groupId:    org.organization.project.plugins
artifactId: project-portal-plugins ---.
                                      |
                                      project-sample-plugin
                                      |
                                      project-another-great-plugin
                                      |
                                      ???? (multiple module project)

Sehen Sie Fragezeichen? Das ist, wo die

Fragen

Ich folgte Konventionen Beispiele (ignorieren spaghetti Apache CXF Beispiel):

  • Root - Projekt-portal (zB. Feder-Kern -, maven-core)
  • First-level-Namen der Hierarchie Erben von root - Projekt-portal-plugins (zB. spring-Kontext-Unterstützung).
  • Second-level-Hierarchie Namen - Projekt-Beispiel-plugin (zB. maven-compiler-plugin).

Und wir sind nun fest auf der Dritten Ebene, wie in den alten games ohne speichert und checkpoints.

  1. Ist dies der richtige directory naming Weg von Maven Beispiele für tiefere Hierarchie-Ebenen?
  2. Gibt es irgendwelche Konventionen oder Regeln, die Sie Folgen, um support-einfache Verzeichnis-und Artefakt-Namen zu vermeiden spaghetti Namen auf tieferen Ebenen?
  3. Wenn es einfache Namen, wird groupId speichern dupliziert Artefakt-Namen (die auftreten, aufgrund der Einfachheit) von Kollisionen im repository?
  4. Was über das suchen und finden von Artefakten, die auf web - /repositories mit doppelte Namen (wegen der Einfachheit)?

Ich nicht wollen, um zu sehen, in meinem Projekt-Struktur ein Modul wie Projekt-portal-liferay-plugins-themes für Eltern oder-noch schlimmer-Projekt-portal-liferay-plugins-themes-weiß-Welpen-wtf-Namen für Kinder.

Wenn Sie könnte Ihre Meinung und Praxis für jede der genannten Fragen und möglichen Problemen, das wäre eine große Hilfe nicht nur für mich, sondern für alle, die mit maven. Danke.

InformationsquelleAutor JMelnik | 2012-02-24
Schreibe einen Kommentar