Blog
  • 2013

Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

Aki Sonatype Nexus-t használ a build szerverén, mint Maven repository, azzal a bosszantó problémával szembesül egy idő után, hogy a sonatype-work könyvtár egyre több helyet foglal el. Ennek alapvetően két oka van:

  • A saját termékünk kiadásait (releases) és munkapéldányait (snapshots) tartjuk itt a végtelenségig
  • A proxy repository helyi gyorstárként funkcionálva letölti a távoli szerverekről az igényelt Maven artifact fájlokat, s azok ott maradnak az idők végezetéig

Saját fájlok takarítása

Ha több verziót is életben tartunk a termékünkből, illetve ezt mások belefordítják a saját projektjeikbe (például mint az AndroidSOAP library), akkor alapvetően a kiadott artifact gyűjteményből nem töröljük ki a régi állományokat, mivel ezeket mások még használhatják. Természetesen a nagyon régi állományok akár törölhetőek is, ha kimondjuk, hogy ezeket a továbbiakban már nem támogatjuk. Ha pedig egyetlen éles rendszerre dolgozunk és a termék nem kerül ki a cégünk kapuján, akkor felesleges a régi kiadások őrizgetése, mert jó eséllyel nem lehet olyan környezetünk, ahol a régi csomag működőképes lenne. A releases repository tartalmát kézzel tudjuk megritkítani, erre ne is keressünk automatikus megoldást.

A munkapéldányaink között viszont célszerű néha automatikus irtást végezni, különben a régi – amúgy senki által nem használt – fájlok feleslegesen foglalják a szabad helyet a fájlrendszeren. Ehhez egyszerűen be kell állítani egy ütemezett feladatot:


Proxy repository takarítása

A proxy tároló alapvető funkciója az, hogy a fordításhoz, teszteléshez vagy futáshoz szükséges Maven artifact-halmaz gyorsan rendelkezésre álljon helyben, ne kelljen mindig – az esetleg lassú – hálózaton át letölteni ezeket a kisebb-nagyobb állományokat, másrészt a távoli repository szerverek terhelését hivatott csökkenteni azzal, hogy csak egyszer töltjük le az adott állományokat. Azonban az idő előrehaladtával az egyes artifact termékekből újabb és újabb verziók jönnek ki, illetve az is előfordulhat, hogy a fejlesztés során átmenetileg olyan függőségeket használunk, amelyekről kiderül, hogy nem alkalmasak az adott feladatra. Ezeket a fájlokat a proxy tárolja, de feleslegesen. Célszerű beállítani egy ésszerű határt a fájlok élettartamára, majd beállítani egy ütemezett feladatot a régen használt állományok törlésére:

Trash ürítése

A fenti két lépés után akár hátra is dőlhetnénk, ám a sonatype-work könyvtár mérete csak nem akar csökkenni, pedig látszólag futnak a fent definiált ütemezett feladatok. Ennek oka, hogy a Nexus nem törli a törölt állományokat, hanem beteszi... úgy van: a szemetesbe. Ha végleg meg szeretnénk szabadulni a felesleges cuccoktól, akkor futtatnunk kell időnként egy olyan ütemezett feladatot is, amely üríti a szemetest:

Az eredmény...

...egy sokkal kisebb helyet elfoglaló Nexus, amely nagyjából azonos funkcionalitással bír.