Kilka miesięcy temu zadałem pytanie na blogu Pawła Stawickiego o upload artefaktów mavena za pomocą ftp. Było to przy okazji wpisu o uploadzie do repozytorium. Paweł nawiązał do wpisu Leszka Gruchały na temat Nexus’a. Na początek co to jest Nexus. Jest to soft do zarządzania repozytorium mavena. Działa na prostej zasadzie: ściągnąć, odpalić, zapomnieć. Szczegóły u Leszka na blogu. Problem polega na tym, że musimy mieć kompa z Javą. W naszych warunkach jest to co najmniej problematyczne. Nie mam serwera z Javą, nie mam kasy na taki serwer i nie mam ochoty użerać się z kolejnym providerem lub rachunkami za prąd. Mam za to konto na lua. Zwykłe konto www z dostępem przez ftp. Miejsca mam dość, bo około 500MB przy maks 25MB plikach. Nie powinno być zatem problemu z hostowaniem sobie repozytorium. Wystarczy tylko skonfigurować mavena. Potrzeba będzie zrobić cztery rzeczy:

  1. Dodać dane konta ftp do pliku settings.xml.
  2. Skonfigurować Distribution Managera.
  3. Skonfigurować rozszerzenie maven-wagon
  4. Skonfigurować maven-deploy-plugin.

Czyli lecimy.

1. dodanie serwera w pliku settings.xml

Otwieramy plik settings.xml i odnajdujemy node <servers> i dodajemy mu:

Listing 1. Wpis w settings.xml

<server>
 	<id>MyRepo</id>
 	<username>username</username>
 	<password>password</password>
</server>

2. Konfiguracja Distribution Managera

W pliku pom.xml dodajemy:

Listing 2. pom.xml – konfiguracja Distribution Managera

<distributionManagement>
	<repository>
		<id>MyRepo</id>
		<url>ftp://username@server.path.com</url>
	</repository>
</distributionManagement>

3. Konfiguracja maven-wagon

Dalej pracujemy z pom.xml. Tym razem dodajemy rozszerzenie (extension):

Listing 3. pom.xml – konfiguracja maven-wagon

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

4. Konfiguracja maven-deploy-plugin

Tu moje rozwiązanie różni się od zaproponowanego przez Pawła (nie Stawickiego). Podał on prostą konfigurację i odesłał do klepania w konsoli. Ja proponuję zaszycie tych danych w pom.xml i uniknięcie pomyłek związanych z klepaniem w linii poleceń:

Listing 3. pom.xml – konfiguracja maven-deploy-plugin

<build>
	<plugins>
		<plugin>
			<groupId>org.apache.maven.plugins</groupId>
			<artifactId>maven-deploy-plugin</artifactId>
			<configuration>
			<groupId>${groupId}</groupId>
				<artifactId>${artifactId}</artifactId>
				<version>1.0</version>
				<generatePom>true</generatePom>
				<file>target/Example-1.0-SNAPSHOT.jar</file>
				<packaging>jar</packaging>
				<url>ftp://username@server.path.com/repo</url>
				<repositoryId>MyRepo</repositoryId>
			</configuration>
		</plugin>
	</plugins>
</build>

Odpalamy:

>mvn deploy:deploy-file

I gotowe 🙂