2022.06, 2023.06

Festlegungen zur Umstellung der Code Basis auf Java Modulsystem

Allgemeines

Mit erscheinen des Java 11 LTS ergibt sich die Notwendigkeit, den bestehenden Code ab 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

siehe Java – die Neuerungen in Version 17 LTS, 18 und 19; Michael Inden; 978-3-86490-902-3

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