Vlastný Maven repozitár za pár minút

Na našom blogu sme si už v minulosti nástroj Maven písali. (článok nájdete TU)

Pokiaľ ste niekedy prišli do styku s problémom ako zozdieľať v rámci firmy, alebo skupiny vývojárov nejakú knižnicu či závislosť a vaše projekty sú postavené nad Maven-om, iste ste narazili na možnosť nainštalovať si vlastný repozitár. Známych mien je hneď niekoľko… Nexus, Archiva, Artifactory atď. Všetky tieto repozitáre sa vyznačujú širokým spektrom pridanej funkcionality, webovým rozhraním pre príjemnú prácu, či možnosťou automaticky nahrávať nové verzie priamo v rámci zostavovania projektu vo vašom obľúbenom vývojovom prostredí. Čo ak ale nemáte zvyšných 1GB RAM pre takúto službu? Alebo čo ak jednoducho nechcete (nemôžete) inštalovať na ten server Javu? Alebo sa jednoducho nemáte chuť zapodievať konfiguráciou a kontrolou, či je program “up to date” a či nemá nejaké bezpečnostné chyby? V takom prípade si viete svoj vlastný repozitár spraviť úplne jednoducho pomocou vášho lokálneho repozitára a to len za pár minút. Čo na to budeme potrebovať?

  • Lokálny maven repozitár. Ten sa z pravidla nachádza v zložke .m2 vo vašom “home” adresári

  • Verejne dostupný PC/server (v rámci internetu, alebo intranetu)

  • Nainštalovaný web server (apache, nginx…)

  • Trochu konfigurácie

Pokiaľ nemáte vygenerovaný lokálny repozitár (vaše IDE to pravdepodobne za vás urobilo automaticky) je možné si ho nechať vygenerovať príkazom:

mvn install -DperformRelease=true -DcreateChecksum=true

Ten je samozrejme potrebné spustiť v adresári s vašim pom.xml. Takýto repozitár (alebo jeho časť) si nahráme na server na ktorom chceme vytvoriť verejne dostupný repozitár. Následne si nakonfigurujeme webový server. Pre nginx by napríklad konfigurácia mohla vyzerať takto:

server {
    listen 80;
    server_name maven.domena.com;
    root /var/www/maven/;

    location / {
        autoindex on;
    }
}

Dôležitý je hlavne parameter “autoindex on” (v prípade apache by to bol “Options Indexes”), ktorý povolí prehľadávanie adresárov a pohyb v nich pomocou prehliadača. Zostáva nám teda nakopírovať lokálny repozitár na zvolené miesto na disku (napr. /var/www/maven) a premenovať súbory maven-metadata-local.xml na maven-metadata.xml. K týmto treba ešte vygenerovať md5sum a sha1sum. Príklad linuxových príkazov pre knižnicu com.domena.utility.xyzlib by teda bol:

cd /var/www/maven/com/domena/utility/xyzlib
mv maven-metadata-local.xml maven-metadata.xml
md5sum maven-metadata.xml > maven-metadata.xml.md5
sha1sum maven-metadata.xml > maven-metadata.xml.sha1

No a repozitár je hotový. Vo vašom projekte potrebujete do pom.xml pridať nový repozitár:

<repository>
    <releases>
        <enabled>true</enabled>
        <updatePolicy>always</updatePolicy>
        <checksumPolicy>fail</checksumPolicy>
    </releases>
    <id>firemny-repozitar</id>
    <name>Firemny Repozitar</name>
    <layout>default</layout>
</repository>

a pridat závislosť na vašu novo zdieľanú knižnicu xyzlib:

<dependency>
    <groupId>com.domena.utility</groupId>
    <artifactId>xxxLib</artifactId>
    <version>1.4.6</version>
</dependency>