2016.06 2017.06

Arbeiten mit Maven

Allgemeines

MyCoRe hat sich dafür entschieden, den Build-Prozess der Module über das Tool Maven abzubilden. Daneben kann Maven auch als Build-Werkzeug für die eigenen Anwendungen genutzt werden. Dies ist auch bei den Beispielanwendungen MIR und Skeleton der Fall. Diese Seite soll eine kurze Erklärung zum Umgang mit Maven und MyCoRe enthalten.

Die von MyCoRe über Maven generierten Informationsseiten sind hier zu finden.

Maven installieren

MyCoRe verwendet das Build-Management-Tool der Apache Software Foundation Maven ( http://maven.apache.org/ / Version 3.3.9 oder höher). Das Werkzeug hilft dabei, möglichst viele Schritte der Softwareentwicklung zu automatisieren. Installieren Sie Maven gemäß Anleitung der Home Page und setzen Sie die Umgebungsvariablen M2_HOME und MAVEN_OPTS. Binden Sie das mvn-Kommando in den Suchpfad mit ein.

Die Funktion von Maven kann mit dem Kommando mvn --version getestet werden. Unter Linux-Systemen wird im Wurzelverzeichnis des Nutzers ein Verzeichnis .m2 angelegt, worin sich alle relevanten Maven-Daten befinden.

Maven und der MyCoRe-Kern

Alle Informationen zum Softwareprojekt MyCoRe werden in den Konfigurationsdatei pom.xml beschrieben. Um den Klon einen gesamten MyCoRe-Kernes lokal zu übersetzen und zu bauen, muss das Kommando mvn clean install ausgeführt werden. Anschließend stehen die Module über das lokale Maven-Verzeichnis (in Linux ~/.m2) zur Nutzung bereit.

Um während des Entwicklungsprozesses einer einzelnen MyCoRe-Komponente (einschließlich der von ihr abhängigen Module und Komponenten) zu bauen, wechselt man in das ausgecheckte mycore -Verzeichnis und führt das Kommando mvn clean install -DskipTests -am -pl mycore-XXX aus.

Vor jedem Commit des MyCoRe-Kern-Codes sollte lokal das Kommando mvn clean install für den ganzen Code-Baum gegeben werden, um sicher zu stellen, dass der Code korrekt compiliert. Nach dem Commit und der erforderliche Integrationsprozedur steht dann das Commit als Snapshot allen Anwendern über das Maven-Repository https://oss.sonatype.org zur Verfügung.

Neben dem globalen Repository unter Maven Central unterhält MyCoRe auch noch ein eigenes Artifactory, auf welchem u. a. jar-Dateien verschiedener Anwender-Projekte abgelegt sind. Dieses ist unter http://artifactory.mycore.de/ zu erreichen. Hier liegt auch der fertige Code des Kerns einschließlich Release und Snapshots 2017.06.

Integration in die eigene Anwendung

Um MyCore in die eigene Anwendung unter Maven einzubinden, müssen die folgenden Repositories in der eigenen pom.xml -Datei eingebunden werden. MyCoRe selbst sollte immer in der Snapshot-Variante benutzt werden, da die Entwickler laufend Bug-Fixes in das letzte Release noch einarbeiten. Sollten einzelne Repositories nicht für die zu bauende Anwendung in Frage kommen, so können diese Definitionsblöcke weg gelassen werden.

<repositories>

  <repository>
    <snapshots>
      <enabled>false</enabled>
    </snapshots>
    <id>central</id>
    <name>Central Repository</name>
    <url>https://repo.maven.apache.org/maven2</url>
  </repository>
  
  <repository>
    <releases>
      <enabled>false</enabled>
    </releases>
    <snapshots>
      <enabled>true</enabled>
    </snapshots>
    <id>ossrh</id>
    <url>https://oss.sonatype.org/content/repositories/snapshots</url>
  </repository>
  
  <!-- add this if you use snapshots form the old MyCoRe artifactory -->
  <repository>
    <releases>
      <enabled>false</enabled>
    </releases>
    <snapshots>
      <enabled>true</enabled>
    </snapshots>
    <id>MyCoRe HQ Snapshots</id>
    <url>http://artifactory.mycore.de/mycore-snapshots</url>
  </repository>
  
</repositories>
      

Gleiches gilt für die verwendeten Plugins.

 <pluginRepositories>
 
  <pluginRepository>
    <releases>
      <updatePolicy>never</updatePolicy>
    </releases>
    <snapshots>
      <enabled>false</enabled>
    </snapshots>
    <id>central</id>
    <name>Central Repository</name>
    <url>https://repo.maven.apache.org/maven2</url>
  </pluginRepository>
  
  <pluginRepository>
    <releases>
      <enabled>false</enabled>
    </releases>
    <snapshots>
      <enabled>true</enabled>
    </snapshots>
    <id>ossrh</id>
    <url>https://oss.sonatype.org/content/repositories/snapshots</url>
  </pluginRepository>
  
  <!-- add this if you use snapshots form the old MyCoRe artifactory -->
  <pluginRepository>
    <snapshots>
      <enabled>false</enabled>
    </snapshots>
    <id>MyCoRe HQ</id>
    <url>http://artifactory.mycore.de/mycore-releases</url>
  </pluginRepository>
  
  <pluginRepository>
    <releases>
      <enabled>false</enabled>
    </releases>
    <snapshots>
      <enabled>true</enabled>
    </snapshots>
    <id>MyCoRe HQ Snapshots</id>
    <url>http://artifactory.mycore.de/mycore-snapshots</url>
  </pluginRepository>
  
</pluginRepositories>
      

 Kathleen Neumann, Thomas Scheffler, Jens Kupferschmidt