In der Fortsetzung meiner Artikelreihen zum Thema Maven ist das Thema dieses Beitrags die Einbindung von Sonatype Nexus in der pom.xml eines Maven-unterstützten Java-Projekts. Möchte man in einem Projekt eigene Dependencies nutzen, so kommt man an der Benutzung eines eigenen Repositories nicht vorbei. Jedoch kann man Nexus auch als schnellen Zwischenspeicher der großen Repositories nutzen, um den Entwicklern einen schnellen Download der Dependencies zu ermöglichen.

Das Problem ist jedoch die Einbindung der Repositories in der pom.xml, die leider recht schlecht beschrieben ist.

Auf der Ebene von “<project>” werden diese vier Einträge gesetzt, die damit bewirken, dass sämtliche Dependencies und Maven-Plugins vom zentralen Sonatpye Nexus gezogen werden.

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
<project>
...
  <repositories>
    <repository>
      <id>central</id>
      <url>http://YOURNEXUSDOMAIN.TLD/content/groups/public</url>
      <snapshots>
        <enabled>false</enabled>
      </snapshots>
    </repository>
    <repository>
      <id>snapshots</id>
      <url>http://YOURNEXUSDOMAIN.TLD/content/groups/public-snapshots</url>
      <releases>
        <enabled>false</enabled>
      </releases>
    </repository>
  </repositories>
  <pluginrepositories>
    <pluginrepository>
      <id>central</id>
      <url>http://YOURNEXUSDOMAIN.TLD/content/groups/public</url>
      <snapshots>
        <enabled>false</enabled>
      </snapshots>
    </pluginrepository>
    <pluginrepository>
      <id>snapshots</id>
      <url>http://YOURNEXUSDOMAIN.TLD/content/groups/public-snapshots</url>
      <releases>
        <enabled>false</enabled>
      </releases>
    </pluginrepository>
  </pluginrepositories>
...
</project>

Natürlich muss YOURNEXUSDOMAIN.TLD durch die Domain ersetzt werden, wo Nexus installiert wurde.

Und das wars auch schon. Möchte man wirklich nur einen Mirror des zentralen Repositories aufsetzen, so kann man sich das hier mal ansehen.