Vlastní Maven repozitář

Pokud vyvíjíte v Javě, určitě jste se setkali s nástrojem Maven. Ten dokáže stahovat knihovny, na kterých závisí Váš projekt, z internetových nebo lokálních repozitářů. Výhoda spočívá v tom, že ke svému projektu nepřikládáte velké množství externích .jar knihoven, ale pouze jeden XML soubor pom.xml, který obsahuje vše potřebné k tomu, aby řešil závislosti Vašeho projektu. Z principu byste neměli do verzovacího nástroje (Git, SVN, …) dávat binární data, kterými takové knihovny jsou.

Na internetu je velké množství veřejných repozitářů, které obsahují ještě více knihoven v různých verzích. Nejznámějším repozitářem je http://mvnrepository.com. My si v tomto článku vytvoříme vlastní (v projektu můžeme mít samozřejmě definováno repozitářů kolik chceme). Budeme k tomu potřebovat pouze Maven (který se nachází snad ve všech linuxových distribucích), IP adresu (případně doménu) a webový server (Apache2, nginx, …).

Nejdříve nainstalujeme Maven (v repozitářích bývá i balíček maven2, ten je ale starší než maven). Poté vložíme nějakou knihovnu do lokálního repozitáře umístěného v ~/.m2/repository.

sudo apt-get install maven
mvn install:install-file -Dfile=/home/petr/knihovna.jar -DgroupId=cz.posvic.utility -DartifactId=knihovna -Dversion=1.0-SNAPSHOT -Dpackaging=jar

Nyní máme vše připravené a stačí zkopírovat adresář ~/.m2/repository do adresáře webového serveru. Ten by měl být nastavený tak, aby dokázal ve webovém prohlížeči zobrazit celou strukturu našeho nového repozitáře (o nastavení webového serveru tento článek není, na internetu je spoustu článků, jak nainstalovat Apache2 a jak ho konfigurovat). Potom už jen stačí v jakémkoliv mavením projektu upravit pom.xml (přidat odkaz na náš veřejný repozitář a přidat závislosti, které požadujeme a které se nacházejí v našem repozitáři). V následuícím výpisu je příklad kompletního souboru pom.xml:

<?xml version="1.0" encoding="UTF-8"?>
<project
  xmlns="http://maven.apache.org/POM/4.0.0"
  xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd"
>
  <modelVersion>4.0.0</modelVersion>
  <groupId>cz.posvic</groupId>
  <artifactId>super-projekt</artifactId>
  <name>SuperProjekt</name>
  <description />

  <repositories>
    <repository>
      <id>posvic-private-repository</id>
      <name>Posvic Private Repository</name>
      <url>http://maven.posvic.cz</url>
      <releases>
        <enabled>true</enabled>
        <updatePolicy>never</updatePolicy>
      </releases>
      <snapshots>
        <enabled>true</enabled>
        <updatePolicy>never</updatePolicy>
      </snapshots>
    </repository>
  </repositories>

  <dependencies>
    <dependency>
      <groupId>cz.posvic.utility</groupId>
      <artifactId>knihovna</artifactId>
      <version>1.0-SNAPSHOT</version>
    </dependency>
  </dependencies>
</project>

V tomto příkladu je mavení repozitář umístěný na adrese http://maven.posvic.cz a v projektu chceme stáhnout knihovnu, kterou jsme na začátku přidali do našeho repozitáře.

Instalace Maven projektu do FTP Maven repozitáře

Pokud na nějaké knihovně pracujete, určitě budete chtít poskytovat její nové verze. Pomocí rozšíření Wagon-FTP můžete jednoduše deployovat svou knihovnu na vlastní FTP jednoduchým příkazem

mvn deploy

pom.xml vašeho projektu, který chcete umístit do repozitáře, by měl vypadat nějak takto:

<project
  xmlns="http://maven.apache.org/POM/4.0.0"
  xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"
>
  <modelVersion>4.0.0</modelVersion>
  <groupId>cz.posvic.sgr</groupId>
  <artifactId>snake</artifactId>
  <version>0.0.1-SNAPSHOT</version>
  <name>Snake</name>
  <description>Simple Games Remake</description>

  <build>
    <sourceDirectory>src</sourceDirectory>
    <plugins>
      <plugin>
        <artifactId>maven-compiler-plugin</artifactId>
        <version>3.0</version>
        <configuration>
          <source>1.7</source>
          <target>1.7</target>
        </configuration>
      </plugin>
    </plugins>

    <extensions>
        <extension>
            <groupId>org.apache.maven.wagon</groupId>
            <artifactId>wagon-ftp</artifactId>
            <version>1.0-alpha-6</version>
        </extension>
    </extensions>
  </build>

  <distributionManagement>
      <repository>
          <id>posvic-ftp</id>
          <url>ftp://earth.posvic.cz/maven</url>
      </repository>
  </distributionManagement>
</project>

Protože máte své FTP určitě chráněné uživatelským jménem a heslem, budete muset zadat jméno a heslo do souboru ~/.m2/settings.xml a tomuto souboru nastavit práva 0600. Důležité je, aby ID repozitáře (posvic-ftp v souboru pom.xml) bylo totožné s ID serveru (posvic-ftp v souboru settings.xml).

<settings xmlns="http://maven.apache.org/POM/4.0.0"
          xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
          xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/settings-1.0.0.xsd">
  <servers>
    <server>
      <id>posvic-ftp</id>
      <username>uzivatel</username>
      <password>heslo</password>
    </server>
  </servers>
</settings>
sudo chmod 600 ~/.m2/settings.xml

Napsat komentář

Vaše emailová adresa nebude zveřejněna. Vyžadované informace jsou označeny *