Article Figure 1 Figure 2 Listing 1 Listing 2
Listing 3 Listing 4 Listing 5 Sidebar 1 Sidebar 2 aug2006.tar

Listing 1 Maven’s configuration file


<!--
 | This is the configuration file for Maven. It can be specified at two 
 | levels:
 |
 |  1. User Level. This settings.xml file provides configuration for a 
 |             single user, and is normally provided in 
 |             $HOME/.m2/settings.xml.
 |
 |             NOTE: This location can be overridden with the system 
 |             property:
 |
 |             -Dorg.apache.maven.user-settings=/path/to/user/settings.xml
 |
 |  2. Global Level. This settings.xml file provides configuration for 
 |             all maven users on a machine (assuming they're all using 
 |             the same maven installation). It's normally provided in 
 |             ${maven.home}/conf/settings.xml.
 |
 |             NOTE: This location can be overridden with the system 
 |             property:
 |
 |             -Dorg.apache.maven.global-settings=/path/to/global/settings.xml
 |
 | The sections in this sample file are intended to give you a running 
 | start at getting the most out of your Maven installation. Where 
 | appropriate, the default values (values used when the setting is not 
 | specified) are provided.
 |
 |-->
<settings>
  <!-- localRepository
   | The path to the local repository maven will use to store artifacts.
   |
   | Default: ~/.m2/repository -->
  <localRepository>/opt/maven/local</localRepository>

  <!-- interactiveMode
   | This will determine whether maven prompts you when it needs input. 
   | If set to false, maven will use a sensible default value, perhaps 
   | based on some other setting, for the parameter in question.
   |
   | Default: true
  <interactiveMode>true</interactiveMode>
  -->

  <!-- offline
   | Determines whether maven should attempt to connect to the network 
   | when executing a build. This will have an effect on artifact 
   | downloads, artifact deployment, and others.
   |
   | Default: false
  <offline>false</offline>
  -->

  <!-- proxies
   | This is a list of proxies which can be used on this machine to 
   | connect to the network. Unless otherwise specified (by system 
   | property or command-line switch), the first proxy specification
   | in this list marked as active will be used.
   |-->
  <proxies>
    <!-- proxy
     | Specification for one proxy, to be used in connecting to the network.
     |
    <proxy>
      <id>optional</id>
      <active>true</active>
      <protocol>http</protocol>
      <username>proxyuser</username>
      <password>proxypass</password>
      <host>proxy.host.net</host>
      <port>80</port>
      <nonProxyHosts>local.net,some.host.com</nonProxyHosts>
    </proxy>
    -->
  </proxies>

  <!-- servers
   | This is a list of authentication profiles, keyed by the server-id 
   | used within the system. Authentication profiles can be used whenever
   | maven must make a connection to a remote server.
   |-->
  <servers>
    <!-- server
     | Specifies the authentication information to use when connecting to 
     | a particular server, identified by a unique name within the 
     | system (referred to by the 'id' attribute below).
     | 
     | NOTE: You should either specify username/password OR 
     |       privateKey/passphrase, since these pairings are used together.
     |  -->
    <!-- These are the authentication details needed to deploy the 
      generated website documents to snagglepuss -->
    <server>
      <id>developerDocumentation</id>
      <username>cruise</username>
      <password>catbert</password>
    </server>
  
    <!-- These are the authentication details for the internal repository -->
    <server>
      <id>internalRepository</id>
      <username>cruise</username>
      <password>catbert</password>
    </server>
    
    <!-- Another sample, using keys to authenticate.
    <server>
      <id>siteServer</id>
      <privateKey>/path/to/private/key</privateKey>
      <passphrase>optional; leave empty if not used.</passphrase>
    </server>
    -->
  </servers>

  <!-- mirrors
   | This is a list of mirrors to be used in downloading artifacts from 
   | remote repositories.
   | 
   | It works like this: a POM may declare a repository to use in 
   | resolving certain artifacts. However, this repository may have 
   | problems with heavy traffic at times, so people have mirrored it to 
   | several places.
   |
   | That repository definition will have a unique id, so we can create a 
   | mirror reference for that repository, to be used as an alternate 
   | download site. The mirror site will be the preferred server for 
   | that repository.
   |-->
  <mirrors>
    <!-- mirror
     | Specifies a repository mirror site to use instead of a given 
     | repository. The repository that this mirror serves has an ID that 
     | matches the mirrorOf element of this mirror. IDs are used
     | for inheritance and direct lookup purposes, and must be unique 
     | across the set of mirrors.
     |
    <mirror>
      <id>mirrorId</id>
      <mirrorOf>repositoryId</mirrorOf>
      <name>Human Readable Name for this Mirror.</name>
      <url>http://my.repository.com/repo/path</url>
    </mirror>
     -->
  </mirrors>
  
  <!-- profiles
   | This is a list of profiles which can be activated in a variety of 
   | ways, and which can modify the build process. Profiles provided in 
   | the settings.xml are intended to provide local machine-specific 
   | paths and repository locations which allow the build to work in the 
   | local environment.
   |
   | For example, if you have an integration testing plugin - like 
   | cactus - that needs to know where your Tomcat instance is installed,
   | you can provide a variable here such that the variable is dereferenced
   | during the build process to configure the cactus plugin.
   |
   | As noted above, profiles can be activated in a variety of ways. One 
   | way - the activeProfiles section of this document (settings.xml) - 
   | will be discussed later. Another way essentially relies on the 
   | detection of a system property, either matching a particular value 
   | for the property, or merely testing its existence. Profiles can also
   | be activated by JDK version prefix, where a value of '1.4' might 
   | activate a profile when the build is executed on a JDK version of 
   | '1.4.2_07'. Finally, the list of active profiles can be specified 
   | directly from the command line.
   |
   | NOTE: For profiles defined in the settings.xml, you are restricted 
   |       to specifying only artifact repositories, plugin repositories,
   |       and free-form properties to be used as configuration variables
   |       for plugins in the POM.
   |
   |-->
  <profiles>
    <!-- profile
     | Specifies a set of introductions to the build process, to be 
     | activated using one or more of the mechanisms described above. For 
     | inheritance purposes, and to activate profiles via <activatedProfiles/>
     | or the command line, profiles have to have an ID that is unique.
     |
     | An encouraged best practice for profile identification is to use a 
     | consistent naming convention for profiles, such as 'env-dev', 
     | 'env-test', 'env-production', 'user-jdcasey', 'user-brett', etc.
     | This will make it more intuitive to understand what the set of 
     | introduced profiles is attempting to accomplish, particularly when 
     | you only have a list of profile id's for debug.
     |
     | This profile example uses the JDK version to trigger activation, 
     | and provides a JDK-specific repo.
    <profile>
      <id>jdk-1.4</id>

      <activation>
        <jdk>1.4</jdk>
      </activation>

      <repositories>
        <repository>
      <id>jdk14</id>
      <name>Repository for JDK 1.4 builds</name>
      <url>http://www.myhost.com/maven/jdk14</url>
      <layout>default</layout>
      <snapshotPolicy>always</snapshotPolicy>
    </repository>
      </repositories>
    </profile>
    -->

    <!--
     | Here is another profile, activated by the system property 
     | 'target-env' with a value of 'dev', which provides a specific 
     | path to the Tomcat instance. To use this, your plugin configuration
     | might hypothetically look like:
     |
     | ...
     | <plugin>
     |   <groupId>org.myco.myplugins</groupId>
     |   <artifactId>myplugin</artifactId>
     |   
     |   <configuration>
     |     <tomcatLocation>${tomcatPath}</tomcatLocation>
     |   </configuration>
     | </plugin>
     | ...
     |
     | NOTE: If you just wanted to inject this configuration whenever 
     |       someone set 'target-env' to anything, you could just leave 
     |       off the <value/> inside the activation-property.
     |-->
     
    <profile>
      <id>repositoryDefinitions</id>
      <repositories>
         <repository>
            <id>internalRepository</id>
        <name>Repository for locally held artifacts</name>
        <url>http://snagglepuss/maven/repository</url>
        <releases>
           <enabled>true</enabled>
        </releases>
        <layout>default</layout>
        <snapshots>
           <enabled>false</enabled>
        </snapshots>
     </repository>
      </repositories>
    </profile>

  </profiles>

  <!-- activeProfiles
   | List of profiles that are active for all builds.
   |  -->
  <activeProfiles>
     <activeProfile>repositoryDefinitions</activeProfile>
  </activeProfiles>

</settings>