Zazwyczaj gdy pracujemy z kilkoma projektami to dość szybko okazuje się, że używamy tych samych ustawień kodowania, katalogów z dodatkami czy też ustawień specyficznych dla naszego lokalnego środowiska jak ścieżki do serwerów, nazwy użytkownika, hasła.
Okazuje się, że o ile co do zasady konfigurację serwera można przynajmniej częściowo wyprowadzić poza pom.xml to już konfiguracja środowiska nie jest taka fajna. Co do zasady są też wyjątki. Glassfish-maven-plugin na przykład nie daje się skonfigurować tak by działać ze standardowymi ustawieniami pliku settings.xml w zakresie serwera i wymaga by… podać hasło otwartym tekstem w pom.xml.
Kolejnym powodem do podjęcia odpowiednich kroków jest różnorakość środowisk, na których pracują programiści. W pracy robię na winxp w domu na ubuntu. Niektóre projekty ciągnę na firmowym laptopie w celach prezentacyjnych. Ciężko jednak trzymać w ramach profili wiele ustawień specyficznych dla poszczególnych komputerów. Dlatego też warto wszelkie tego typu ustawienia przenieść do pliku settings.xml
U mnie wygląda on tak:

Listing 1. Skrót z settings.xml

<settings>
	<proxies></proxies>
	<servers></servers>
	<mirrors></mirrors>
	<profiles>
		<profile>
			<id>gwt</id>
			<repositories>
				<repository>
					<id>gwt-maven</id>
					<url>http://gwt-maven.googlecode.com/svn/trunk/mavenrepo/</url>
				</repository>
			</repositories>
			<pluginRepositories>
				<pluginRepository>
					<id>gwt-maven</id>
					<url>http://gwt-maven.googlecode.com/svn/trunk/mavenrepo/</url>
				</pluginRepository>
			</pluginRepositories>
			<properties>
				<gwtVersion>1.6.4</gwtVersion>
			</properties>
		</profile>
		<profile>
			<id>local</id>
			<properties>
				<encoding>UTF-8</encoding>
				<targetJdk>1.6</targetJdk>
				<configuration>${basedir}/src/main/configuration</configuration>
				<glassfishDirectory>/home/koziolek/glassfishv3/glassfish</glassfishDirectory>
			</properties>
		</profile>
	</profiles>
	<activeProfiles>
		<activeProfile>gwt</activeProfile>
		<activeProfile>local</activeProfile>
	</activeProfiles>
</settings>

Dzięki takiemu podejściu nie muszę się już martwić o to czy wszystko jest aby dobrze skonfigurowane.