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.
Można również trzymać dane wrażliwe w osobnych plikach, a następnie za pomocą Mavena skorzystać z filtrowania zasobów i w locie nadpisywać docelowy plik.
Ano można, ale w tym przypadku w fabryce mamy uniwersalną instalkę środowiska (JBoss, maven, ant, eclipse), która zawiera już odpowiednie definicje. Metodę zaproponowaną sprawdzę.