setup-maven-plugin stage two


Afgelopen maart heb ik al een eerste aanzet gedaan voor een blogreeks over een nieuwe maven-plugin die ik aan het schrijven ben. Nu na ongeveer drie maanden zijn er tal van nieuwe features toegevoegd ten opzichte van het vorige artikel.

Zo is het ondertussen mogelijk om met zogenoemde dynamische xml-bestanden te werken. Dit houdt in dat de templates voor een specifiek xml-bestand expressies kan bevatten, welke via systeemproperties, externe propery-bestanden of meegegeven parameters gevuld kunnen worden. Dit klinkt misschien erg complex, dus zal ik het met een voorbeeld uitleggen.

<settings>
 <proxies>
 <proxy>
  <id>mycompany</id>
   <active>true</active>
   <protocol>http</protocol>
   <host>proxy.somewhere.com</host>
   <port>8080</port>
   <username>${proxy.mycompany.username}</username>
   <password>${proxy.mycompany.password}</password>
   <nonProxyHosts>www.google.com|*.somewhere.com</nonProxyHosts>
  </proxy>
 </proxies>
</settings>

In de bovenstaande template van een settings.xml zie je 2 expressies staan: ${proxy.mycompany.username} en ${proxy.mycompany.password}. Deze moeten natuurlijk per persoon verschillen. Er zijn 2 manieren om deze expressies van een waarde te voorzien:

Als extra parameter bij de plugin-call: Dit betekent, dat je de plugin als volgt aanroept
mvn setup-maven-plugin:global-settings -Dproxy.mycompany.username=Duke -Dproxy.mycompany.password=s3cr3t

Een tweede manier is om een bestand aan te maken (default naam is in dit geval settings.properties)

proxy.mycompany.username=Duke
proxy.mycompany.password=s3cr3t

Daarnaast is het ook mogelijk om systeemparameters in je template op te nemen, welke ook vervangen kunnen worden door de bijbehorende waarde.

Een andere feature die ik nog niet genoemd had, maar welke wel keurig in dit rijtje past zijn het ondersteunen van verschillende scm-settings. Het blijkt dat voor een aantal SourceControlManagement systemen aanvullende settings-bestanden ingesteld kunnen worden. Ook daar ben ik mee bezig geweest. Helaas is een deel hiervan nogal slordig opgezet, waardoor het niet mogelijk is om er goede tests voor te schrijven. Maar aangezien ze in de basis hetzelfde zijn, heb ik ze al wel geprepareerd. De volgende scm-systemen worden ondersteund: clearcase, cvs, git, svn, vss.

Tot slot is er een goal toegevoegd, waarmee je wachtwoorden geencrypt in je settings-security.xml kunt opslaan. Ook hiervoor zijn de bovenstaande filter-mechanismes beschikbaar.

Doel is momenteel om de code op te schonen en een aantal gelijke stukken code onder te brengen in eigen classes. Vervolgens zal de code aangepast worden naar de codehaus standaarden en is het deze zomer vast rijp genoeg om aan te bieden.

Advertisements

Tags: ,

Geef een reactie

Vul je gegevens in of klik op een icoon om in te loggen.

WordPress.com logo

Je reageert onder je WordPress.com account. Log uit / Bijwerken )

Twitter-afbeelding

Je reageert onder je Twitter account. Log uit / Bijwerken )

Facebook foto

Je reageert onder je Facebook account. Log uit / Bijwerken )

Google+ photo

Je reageert onder je Google+ account. Log uit / Bijwerken )

Verbinden met %s


%d bloggers liken dit: