Was sind Best Practices für Naming Maven-Module?
-
29-09-2019 - |
Frage
Unter der Annahme, dass wir ein Projekt mit dem Namen project
und Module module1
und module2
haben, früher neige ich dazu, die folgende Benennungsstrategie zu verwenden:
-- project
-- projectModule1
-- projectModule2
Jetzt benutze ich einen anderen:
-- project
-- project-module1
-- project-module2
Was sind Best Practices für Maven Module Benennung?
Lösung
Ich schrieb dazu einige Noten in dem „Effektiven Implementation“ Buch, aber es gibt keine Regel oder kanonische Konvention.
einige Fassen wir zusammen:
Zunächst einmal die wichtigsten Dinge ist, dass Sie konsistent sind.
Allgemeine Maven Konvention verwendet '-'. Als Trennzeichen (commons-lang
, maven-model
)
Wenn Sie beabsichtigen, es extern genutzt werden, erinnere mich an die module = artifact ID = filename
(Best Practice), so muss es erkennbar sein (maven-model-2.0.jar
klar ist, model-2.0.jar
nicht ist). In diesem Fall wiederholen Sie in der Regel das letzte Element der Gruppen-ID als Mini-Namespace. „Intern“ Module weglassen kann es aus Gründen der Kürze (Als Beispielanwendung zeigt: http: //github.com/brettporter/centrepoint/tree/master/centrepoint/modules/ ).
Abgesehen davon, dass ich sie so kurz wie möglich halten würde.
Sie können die Parallele zwischen Java-Paket und Klassennamenskonventionen zu Maven Gruppe und Artefakt-IDs ziehen.
Andere Tipps
Ich versuche normalerweise Modulnamen kurz zu halten. Wenn der Name ‚will‘ lang sein, das ist ein Hinweis darauf, dass eine andere Verschachtelungsebene ist wahrscheinlich eine gute Idee. Anstatt also folgendermaßen aus:
- root
- api
- impl
- security
- service-soap
- service-rest
- client-swing
- client-web-html
- client-web-mobile
Ich würde Nest Dinge weiter:
- root
- api
- impl
- security
- service
- soap
- rest
- client
- swing
- web
- html
- mobile
durch maven Reaktor Optionen können Sie immer noch die verschachtelte Module von oben isoliert bauen:
mvn -pl client/web clean install
Sie können sogar noch einen Schritt weiter gehen:
-- project
-- project-module-1
-- project-module-2
Kein Scherz jetzt, das ist wirklich eine Frage des Geschmacks.
Haben Sie einen schönen Tag Maksim