2020.06
Festlegungen zur Umstellung der Code Basis auf Java 11 Modulsystem
Allgemeines
Mit erscheinen des Java 11 LTS ergibt sich die Notwendigkeit, den bestehenden Code für Release 2022.06 schrittweise
in das Java Platform Module System
JPMS
zu überführen. Die folgenden Schritte und darin getroffenen Festlegungen sollen dies
ermöglichen.
siehe
Modularisierung mit Java 9; Oelmann, Guido; ISBN 978-3-86490-477-6
Festlegungen für Maven
Diese Festlegung gilt für alle Projekte, welche das MyCoRe-Git-Repository und die zentralen Maven-Instanzen nutzen.
GroupId
- org.mycore.{mcr | mir | ubo | profkat | ... }
ArtifactId
-
MyCoRe
- {mcr | mycore}-{jpa | mail | ifs2 | ...}
- JPMS mit mcr-*
- alte Komponenten mit mycore-*
- mir-{common | layout | webapp | ...}
- ubo-{common | layout | ...}
- profkat-{...}
1
2
3
4
5
6
|
<dependency>
<groupId>org.mycore.mcr</groupId>
<artifactId>mcr-oai2</artifactId>
<version>2022.06.1-SNAPSHOT</version>
</dependency>
|
JPMS Module
-
MyCoRe
- JPA: org.mycore.jpa
- ACL-Editor: org.mycore.mcr.acl.editor (generisch -> speziell)
Java Package Namen
-
MyCoRe
- JPA: org.mycore.jpa.*
- ACL-Editor: org.mycore.mcr.acl.editor.* (generisch -> speziell)
- MIR
- org.mycore.mir.*
- layout: org.mycore.mir.layout.*
- common: org.mycore.mir.common.*
Plugins
Plugins teilen keine Eigenschaften von Package-, Module-, GroupId und ArtifactId von den zugehörigen Anwendungen.
- mir-plugin-dbt (statt vorher mir-dbt; davor dbt-module)
- Paket de.uni.jena.thulb-dbt.*
- JPMS: de.uni.jena.thulb.dbt
- GroupId: de.uni.jena.thulb.dbt.plugin
- ArtifactId: mir-plugin-dbt
- mir-plugin-foo (ArtifactId eindeutig wegen 'mir-plugin'-Präfix)
- Paket org.mycore.mir.plugin.*
- JPMS: org.mycore.mir.plugin
- GroupId: org.mycore.mir.plugin
- ArtifactId: mir-plugin-foo
- Achtung bei Maven-Plugins (siehe Namenskonvention unter https://maven.apache.org/guides/plugin/guide-java-plugin-development.html)
- ArtifactId mit Präfix 'maven' ist nicht erlaubt!
- Alternative: mycore-maven-plugin-datamodel
- Paket org.mycore.maven.plugin.datamodel.*
- JPMS: org.mycore.maven.plugin.datamodel
- GroupId: org.mycore.maven.plugin
- ArtifactId: mycore-maven-plugin-foo
Einzuhaltende Regeln
- Alles klein schreiben.
- Keine Binde- und Unterstriche in Package- und Modulnamen, dafür '.' als Trenner verwenden und von
generisch (links) nach speziell (rechts) untergliedern.
- ArtifactId - den Abschluss der GroupId vor einen Bindestrich setzten.
- GroupId: org.mycore.mcr
- ArtifactId: mcr-...
- Immer den Singular verwenden!
- common statt commons
- api statt apis
- plugin statt plugins