You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@maven.apache.org by jv...@apache.org on 2014/07/01 01:32:19 UTC

svn commit: r1606945 [3/3] - in /maven/site/trunk/content: apt/ markdown/

Added: maven/site/trunk/content/markdown/privacy-policy.md
URL: http://svn.apache.org/viewvc/maven/site/trunk/content/markdown/privacy-policy.md?rev=1606945&view=auto
==============================================================================
--- maven/site/trunk/content/markdown/privacy-policy.md (added)
+++ maven/site/trunk/content/markdown/privacy-policy.md Mon Jun 30 23:32:18 2014
@@ -0,0 +1,28 @@
+## Privacy Policy
+
+Information about your use of this website is collected using server
+access logs and a tracking cookie. The collected information consists of
+the following:
+
+1.  The IP address from which you access the website;
+2.  The type of browser and operating system you use to access our site;
+3.  The date and time you access our site;
+4.  The pages you visit; and
+5.  The addresses of pages from where you followed a link to our site.
+
+Part of this information is gathered using a tracking cookie set by the
+[Google Analytics](http://www.google.com/analytics/) service and handled
+by Google as described in their [privacy
+policy](http://www.google.com/privacy.html). See your browser
+documentation for instructions on how to disable the cookie if you
+prefer not to share this data with Google.
+
+We use the gathered information to help us make our site more useful to
+visitors and to better understand how and when our site is used. We do
+not track or collect personally identifiable information or associate
+gathered data with any personally identifying information from other
+sources.
+
+By using this website, you consent to the collection of this data in the
+manner and for the purpose described above.
+

Added: maven/site/trunk/content/markdown/repository-management.md
URL: http://svn.apache.org/viewvc/maven/site/trunk/content/markdown/repository-management.md?rev=1606945&view=auto
==============================================================================
--- maven/site/trunk/content/markdown/repository-management.md (added)
+++ maven/site/trunk/content/markdown/repository-management.md Mon Jun 30 23:32:18 2014
@@ -0,0 +1,127 @@
+## Why do I need a Repository Manager?
+
+Maven Repository managers serve two purposes: they act as highly
+configurable proxies between your organization and the public Maven
+repositories and they also provide an organization with a deployment
+destination for your own generated artifacts.
+
+Proxying a Maven repository brings a number of benefits. Proxying speeds
+up builds throughout your organization by installing a local cache for
+all artifacts from the Central Maven repository. If a developer in your
+organization needs to download version 2.5 of the Spring Framework and
+you are using a Maven Repository Manager, the dependencies (and the
+dependency's dependencies) only need to be downloaded from the remote
+repository once. With a high-speed connection to the Internet this might
+seem like a minor concern, but if you are constantly asking your
+developers to download hundreds of megabytes of third-party
+dependencies, the real cost savings are going to be the time it takes
+Maven to check for new versions of dependencies and to download
+dependencies. Serving Maven dependencies from a local repository can
+save you hundreds of requests over HTTP, and, in very large
+multi-project builds, this can shave minutes from a build.
+
+If your project is relying on a number of SNAPSHOT dependencies, Maven
+will need to check for updated version of these snapshots. Depending on
+the configuration of your remote repositories, Maven will check for
+SNAPSHOT updates periodically, or it might be checking for SNAPSHOT
+updates on every build. When Maven checks for a snapshot update it needs
+to interrogate the remote repository for the latest version of the
+SNAPSHOT dependency. Depending on your connection to the public Internet
+and the load on the central Maven repository, a SNAPSHOT update can add
+seconds to your project's build for each SNAPSHOT update. When you host
+a local repository proxy with a repository manager, your repository
+manager is going to check for SNAPSHOT updates on a regular schedule,
+and your applications will be able to interact with a local repository.
+If you develop software with a lot of SNAPSHOT dependencies, using a
+local repository manager can often shave minutes from a large
+multi-module project build, your 5-10 second SNAPSHOT update checks
+against the public central repository are going to execute in hundreds
+of milliseconds (or less).
+
+In addition to the simple savings in time and bandwidth, a repository
+manager provides an organization with control over what is downloaded by
+Maven. You can include or exclude specific artifacts from the public
+repository, and having this level of control over what is downloaded
+from the central Maven repository is a prerequisite for organizations
+which need strict control over what dependencies are used throughout an
+organization. An organization which wants to standardize on a specific
+version of a dependency like Hibernate or Spring can enforce this
+standardization by only providing access to a specific version of an
+artifact in a repository manager. Other organizations might be concerned
+with making sure that every external dependency has a license compatible
+with the legal standards of that organization. If a corporation is
+producing a application which is distributed, they might want to make
+sure that no one inadvertently adds a dependency on a third-party
+library which is covered under a copy-left license like the GPL.
+Repository managers provide for the level of control that an
+organization needs to make sure that overall architecture and policy can
+be enforced.
+
+Aside from the benefits of mediating access to remote repositories, a
+repository manager also provides something essential to full adoption of
+Maven. Unless you expect every member of your organization to download
+and build every single internal project, you will want to provide a
+mechanism for developers and departments to share both SNAPSHOT and
+releases for internal project artifacts. A Maven repository manager
+provides your organization with such a deployment target. Once you
+install a Maven repository manager, you can start using Maven to deploy
+snapshots and releases to a custom repository managed by the repository
+manager. Over time, this central deployment point for internal projects
+becomes the fabric for collaboration between different development
+teams.
+
+## The List of Repository Managers
+
+The Following is a list of the known Maven repository managers and
+listed in alphabetical order:
+
+### [Apache Archiva](http://archiva.apache.org/)
+
+Apache Archiva is an extensible repository management software that
+helps taking care of your own personal or enterprise-wide build artifact
+repository. It is the perfect companion for build tools such as Maven,
+Continuum, and ANT.
+
+Archiva offers several capabilities, amongst which remote repository
+proxying, security access management, build artifact storage, delivery,
+browsing, indexing and usage reporting, extensible scanning
+functionality... and many more!
+
+### [Artifactory](http://www.jfrog.org/sites/artifactory/latest/)
+
+Artifactory is a Maven 2 enterprise repository. It offers advanced
+proxying, caching and security facilities to provide a robust,
+reproducible and independent build environment when using Maven.
+Artifactory is being used by clients ranging from small startup teams to
+international corporate teams employing distributed development, thus
+improving the development experience for tens of thousands of
+developers. Artifactory exposes a robust artifacts management platform
+using rich Ajax web UI and can be run out-of-the-box with a simple
+"unzip and launch".
+
+### [Sonatype Nexus (previously Proximity)](http://nexus.sonatype.org)
+
+Sonatype Nexus is the repository manager used as the input channel for
+the [Central Repository](http://search.maven.org) running the Sonatype
+Open Source Repository Hosting OSSRH service. Nexus is available in an
+open source as well as a commercial edition and runs [large
+enterprise](http://www.sonatype.com/about/customers) as well as open
+source forge sites such as
+[JBoss](https://repository.jboss.org/nexus/index.html) or
+[Apache](https://repository.apache.org/). It provides robust features
+and performance with the open source version and scales to the high
+demands of large enterprises with the pro edition. Find out more details
+on the [website](http://links.sonatype.com/products/nexus/pro/home)} or
+by using the [trial
+version](http://links.sonatype.com/products/nexus/pro/trial).
+
+### Other resources
+
+-   [Free book from Sonatype - Repository Management with
+    Nexus](http://links.sonatype.com/products/nexus/oss/docs)
+-   [Maven Concepts
+    Repositories](http://docs.codehaus.org/display/MAVENUSER/Maven+Concepts+Repositories)
+    from Maven wiki
+-   [Continuously updated Feature
+    matrix.](http://docs.codehaus.org/display/MAVENUSER/Maven+Repository+Manager+Feature+Matrix)
+

Added: maven/site/trunk/content/markdown/security.md
URL: http://svn.apache.org/viewvc/maven/site/trunk/content/markdown/security.md?rev=1606945&view=auto
==============================================================================
--- maven/site/trunk/content/markdown/security.md (added)
+++ maven/site/trunk/content/markdown/security.md Mon Jun 30 23:32:18 2014
@@ -0,0 +1,34 @@
+## Security Vulnerabilities
+
+Please note that binary patches are not produced for individual
+vulnerabilities. To obtain the binary fix for a particular vulnerability
+you should upgrade to an Apache Maven version where that vulnerability
+has been fixed.
+
+For more information about reporting vulnerabilities, see the [Apache
+Security Team](http://www.apache.org/security/) page.
+
+### CVE-2013-0253 Apache Maven 3.0.4
+
+Severity: Medium
+
+Vendor: The Apache Software Foundation
+
+Versions Affected:
+
+-   Apache Maven 3.0.4
+-   Apache Maven Wagon 2.1, 2.2, 2.3
+
+Description: Apache Maven 3.0.4 (with Apache Maven Wagon 2.1) has
+introduced a non-secure SSL mode by default. This mode disables all SSL
+certificate checking, including: host name verification , date validity,
+and certificate chain. Not validating the certificate introduces the
+possibility of a man-in-the-middle attack.
+
+[CVE-2013-0253](http://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2013-0253)
+
+All users are recommended to upgrade to [Apache Maven
+3.0.5](./download.cgi) and Apache Maven Wagon 2.4.
+
+Credit: This issue was identified by Graham Leggett
+

Added: maven/site/trunk/content/markdown/settings.md
URL: http://svn.apache.org/viewvc/maven/site/trunk/content/markdown/settings.md?rev=1606945&view=auto
==============================================================================
--- maven/site/trunk/content/markdown/settings.md (added)
+++ maven/site/trunk/content/markdown/settings.md Mon Jun 30 23:32:18 2014
@@ -0,0 +1,487 @@
+## Settings Reference
+
+1.  [Introduction](#Introduction)
+    1.  [Quick Overview](#Quick_Overview)
+
+2.  [Settings Details](#Settings_Details)
+    1.  [Simple Values](#Simple_Values)
+    2.  [Plugin Groups](#Plugin_Groups)
+    3.  [Servers](#Servers)
+        1.  [Password Encryption](#Password_Encryption)
+
+    4.  [Mirrors](#Mirrors)
+    5.  [Proxies](#Proxies)
+    6.  [Profiles](#Profiles)
+        1.  [Activation](#Activation)
+        2.  [Repositories](#Repositories)
+        3.  [Plugin Repositories](#Plugin_Repositories)
+
+    7.  [Active Profiles](#Active_Profiles)
+
+## Introduction
+
+### Quick Overview
+
+The `settings` element in the `settings.xml` file contains elements used
+to define values which configure Maven execution in various ways, like
+the `pom.xml`, but should not be bundled to any specific project, or
+distributed to an audience. These include values such as the local
+repository location, alternate remote repository servers, and
+authentication information.
+
+There are two locations where a `settings.xml` file may live:
+
+-   The Maven install: `$M2_HOME/conf/settings.xml`
+-   A user's install: `${user.home}/.m2/settings.xml`
+
+The former `settings.xml` are also called global settings, the latter
+`settings.xml` are referred to as user settings. If both files exists,
+their contents gets merged, with the user-specific `settings.xml` being
+dominant.
+
+Tip: If you need to create user-specific settings from scratch, it's
+easiest to copy the global settings from your Maven installation to your
+`${user.home}/.m2` directory. Maven's default `settings.xml` is a
+template with comments and examples so you can quickly tweak it to match
+your needs.
+
+Here is an overview of the top elements under `settings`:
+
+```
+    <settings xmlns="http://maven.apache.org/SETTINGS/1.0.0"
+      xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+      xsi:schemaLocation="http://maven.apache.org/SETTINGS/1.0.0
+                          http://maven.apache.org/xsd/settings-1.0.0.xsd">
+      <localRepository/>
+      <interactiveMode/>
+      <usePluginRegistry/>
+      <offline/>
+      <pluginGroups/>
+      <servers/>
+      <mirrors/>
+      <proxies/>
+      <profiles/>
+      <activeProfiles/>
+    </settings>
+```
+
+The contents of the `settings.xml` can be interpolated using the
+following expressions:
+
+1.  `${user.home}` and all other system properties *(since Maven 3.0)*
+2.  `${env.HOME}` etc. for environment variables
+
+Note that properties defined in profiles within the `settings.xml`
+cannot be used for interpolation.
+
+## Settings Details
+
+### Simple Values
+
+Half of the top-level `settings` elements are simple values,
+representing a range of values which describe elements of the build
+system that are active full-time.
+
+    <settings xmlns="http://maven.apache.org/SETTINGS/1.0.0"
+      xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+      xsi:schemaLocation="http://maven.apache.org/SETTINGS/1.0.0
+                          http://maven.apache.org/xsd/settings-1.0.0.xsd">
+      <localRepository>${user.home}/.m2/repository</localRepository>
+      <interactiveMode>true</interactiveMode>
+      <usePluginRegistry>false</usePluginRegistry>
+      <offline>false</offline>
+      ...
+    </settings>
+
+-   **localRepository**: This value is the path of this build system's
+    local repository. The default value is
+    `${user.home}/.m2/repository`. This element is especially useful for
+    a main build server allowing all logged-in users to build from a
+    common local repository.
+-   **interactiveMode**: `true` if Maven should attempt to interact with
+    the user for input, `false` if not. Defaults to `true`.
+-   **usePluginRegistry**: `true` if Maven should use the
+    `${user.home}/.m2/plugin-registry.xml` file to manage plugin
+    versions, defaults to `false`. *Note that for the current version of
+    Maven 2.0, the plugin-registry.xml file should not be depended upon.
+    Consider it dormant for now.*
+-   **offline**: `true` if this build system should operate in offline
+    mode, defaults to `false`. This element is useful for build servers
+    which cannot connect to a remote repository, either because of
+    network setup or security reasons.
+
+### Plugin Groups
+
+This element contains a list of `pluginGroup` elements, each contains a
+groupId. The list is searched when a plugin is used and the groupId is
+not provided in the command line. This list automatically contains
+`org.apache.maven.plugins` and `org.codehaus.mojo`.
+
+    <settings xmlns="http://maven.apache.org/SETTINGS/1.0.0"
+      xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+      xsi:schemaLocation="http://maven.apache.org/SETTINGS/1.0.0
+                          http://maven.apache.org/xsd/settings-1.0.0.xsd">
+      ...
+      <pluginGroups>
+        <pluginGroup>org.mortbay.jetty</pluginGroup>
+      </pluginGroups>
+      ...
+    </settings>
+
+For example, given the above settings the Maven command line may execute
+`org.mortbay.jetty:jetty-maven-plugin:run` with the truncated command:
+
+    mvn jetty:run
+
+### Servers
+
+The repositories for download and deployment are defined by the
+[`repositories`](./pom.html#Repositories) and
+[`distributionManagement`](./pom.html#Distribution_Management) elements
+of the POM. However, certain settings such as `username` and `password`
+should not be distributed along with the `pom.xml`. This type of
+information should exist on the build server in the `settings.xml`.
+
+    <settings xmlns="http://maven.apache.org/SETTINGS/1.0.0"
+      xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+      xsi:schemaLocation="http://maven.apache.org/SETTINGS/1.0.0
+                          http://maven.apache.org/xsd/settings-1.0.0.xsd">
+      ...
+      <servers>
+        <server>
+          <id>server001</id>
+          <username>my_login</username>
+          <password>my_password</password>
+          <privateKey>${user.home}/.ssh/id_dsa</privateKey>
+          <passphrase>some_passphrase</passphrase>
+          <filePermissions>664</filePermissions>
+          <directoryPermissions>775</directoryPermissions>
+          <configuration></configuration>
+        </server>
+      </servers>
+      ...
+    </settings>
+
+-   **id**: This is the ID of the server *(not of the user to login as)*
+    that matches the `id` element of the repository/mirror that Maven
+    tries to connect to.
+-   **username**, **password**: These elements appear as a pair denoting
+    the login and password required to authenticate to this server.
+-   **privateKey**, **passphrase**: Like the previous two elements, this
+    pair specifies a path to a private key (default is
+    `${user.home}/.ssh/id_dsa`) and a `passphrase`, if required. The
+    `passphrase` and `password` elements may be externalized in the
+    future, but for now they must be set plain-text in the
+    `settings.xml` file.
+-   **filePermissions**, **directoryPermissions**: When a repository
+    file or directory is created on deployment, these are the
+    permissions to use. The legal values of each is a three digit number
+    corrosponding to \*nix file permissions, ie. 664, or 775.
+
+*Note:* If you use a private key to login to the server, make sure you
+omit the `<password>` element. Otherwise, the key will be ignored.
+
+#### Password Encryption
+
+A new feature - server password and passphrase encryption has been added
+to 2.1.0+. See details [on this
+page](./guides/mini/guide-encryption.html)
+
+### Mirrors
+
+    <settings xmlns="http://maven.apache.org/SETTINGS/1.0.0"
+      xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+      xsi:schemaLocation="http://maven.apache.org/SETTINGS/1.0.0
+                          http://maven.apache.org/xsd/settings-1.0.0.xsd">
+      ...
+      <mirrors>
+        <mirror>
+          <id>planetmirror.com</id>
+          <name>PlanetMirror Australia</name>
+          <url>http://downloads.planetmirror.com/pub/maven2</url>
+          <mirrorOf>central</mirrorOf>
+        </mirror>
+      </mirrors>
+      ...
+    </settings>
+
+-   **id**, **name**: The unique identifier and user-friendly name of
+    this mirror. The `id` is used to differentiate between `mirror`
+    elements and to pick the corresponding credentials from the
+    [`<servers>`](#Servers) section when connecting to the mirror.
+-   **url**: The base URL of this mirror. The build system will use this
+    URL to connect to a repository rather than the original repository
+    URL.
+-   **mirrorOf**: The `id` of the repository that this is a mirror of.
+    For example, to point to a mirror of the Maven `central` repository
+    (`http://repo.maven.apache.org/maven2/`), set this element to
+    `central`. More advanced mappings like `repo1,repo2` or `*,!inhouse`
+    are also possible. This must not match the mirror `id`.
+
+For a more in-depth introduction of mirrors, please read the [Guide to
+Mirror Settings](./guides/mini/guide-mirror-settings.html).
+
+### Proxies
+
+    <settings xmlns="http://maven.apache.org/SETTINGS/1.0.0"
+      xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+      xsi:schemaLocation="http://maven.apache.org/SETTINGS/1.0.0
+                          http://maven.apache.org/xsd/settings-1.0.0.xsd">
+      ...
+      <proxies>
+        <proxy>
+          <id>myproxy</id>
+          <active>true</active>
+          <protocol>http</protocol>
+          <host>proxy.somewhere.com</host>
+          <port>8080</port>
+          <username>proxyuser</username>
+          <password>somepassword</password>
+          <nonProxyHosts>*.google.com|ibiblio.org</nonProxyHosts>
+        </proxy>
+      </proxies>
+      ...
+    </settings>
+
+-   **id**: The unique identifier for this proxy. This is used to
+    differentiate between `proxy` elements.
+-   **active**: `true` if this proxy is active. This is useful for
+    declaring a set of proxies, but only one may be active at a time.
+-   **protocol**, **host**, **port**: The `protocol://host:port` of the
+    proxy, seperated into discrete elements.
+-   **username**, **password**: These elements appear as a pair denoting
+    the login and password required to authenticate to this proxy
+    server.
+-   **nonProxyHosts**: This is a list of hosts which should not be
+    proxied. The delimiter of the list is the expected type of the proxy
+    server; the example above is pipe delimited - comma delimited is
+    also common.
+
+### Profiles
+
+The `profile` element in the `settings.xml` is a truncated version of
+the `pom.xml` `profile` element. It consists of the `activation`,
+`repositories`, `pluginRepositories` and `properties` elements. The
+`profile` elements only include these four elements because they
+concerns themselves with the build system as a whole (which is the role
+of the `settings.xml` file), not about individual project object model
+settings.
+
+If a profile is active from `settings`, its values will override any
+equivalently ID'd profiles in a POM or `profiles.xml` file.
+
+#### Activation
+
+Activations are the key of a profile. Like the POM's profiles, the power
+of a profile comes from its ability to modify some values only under
+certain circumstances; those circumstances are specified via an
+`activation` element.
+
+    <settings xmlns="http://maven.apache.org/SETTINGS/1.0.0"
+      xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+      xsi:schemaLocation="http://maven.apache.org/SETTINGS/1.0.0
+                          http://maven.apache.org/xsd/settings-1.0.0.xsd">
+      ...
+      <profiles>
+        <profile>
+          <id>test</id>
+          <activation>
+            <activeByDefault>false</activeByDefault>
+            <jdk>1.5</jdk>
+            <os>
+              <name>Windows XP</name>
+              <family>Windows</family>
+              <arch>x86</arch>
+              <version>5.1.2600</version>
+            </os>
+            <property>
+              <name>mavenVersion</name>
+              <value>2.0.3</value>
+            </property>
+            <file>
+              <exists>${basedir}/file2.properties</exists>
+              <missing>${basedir}/file1.properties</missing>
+            </file>
+          </activation>
+          ...
+        </profile>
+      </profiles>
+      ...
+    </settings>
+
+Activation occurs when all specified criteria have been met, though not
+all are required at once.
+
+-   **jdk**: `activation` has a built in, Java-centric check in the
+    `jdk` element. This will activate if the test is run under a jdk
+    version number that matches the prefix given. In the above example,
+    `1.5.0_06` will match. Ranges are also supported as of Maven 2.1.
+    See the
+    [maven-enforcer-plugin](http://maven.apache.org/enforcer/enforcer-rules/versionRanges.html)
+    for more details about supported ranges.
+-   **os**: The `os` element can define some operating system specific
+    properties shown above. See the
+    [maven-enforcer-plugin](http://maven.apache.org/plugins/maven-enforcer-plugin/rules/requireOS.html)
+    for more details about OS values.
+-   **property**: The `profile` will activate if Maven detects a
+    property (a value which can be dereferenced within the POM by
+    `${name}`) of the corresponding `name=value` pair.
+-   **file**: Finally, a given filename may activate the `profile` by
+    the `existence` of a file, or if it is `missing`.
+
+The `activation` element is not the only way that a `profile` may be
+activated. The `settings.xml` file's `activeProfile` element may contain
+the profile's `id`. They may also be activated explicitly through the
+command line via a comma separated list after the `-P` flag (e.g.
+`-P test`).
+
+*To see which profile will activate in a certain build, use the*
+`maven-help-plugin`.
+
+    mvn help:active-profiles
+
+#### Properties
+
+Maven properties are value placeholder, like properties in Ant. Their
+values are accessible anywhere within a POM by using the notation
+`${X}`, where `X` is the property. They come in five different styles,
+all accessible from the `settings.xml` file:
+
+1.  `env.X`: Prefixing a variable with "env." will return the shell's
+    environment variable. For example, `${env.PATH}` contains the \$path
+    environment variable (`%PATH%` in Windows).
+2.  `project.x`: A dot (.) notated path in the POM will contain the
+    corresponding element's value. For example:
+    `<project><version>1.0</version></project>` is accessible via
+    `${project.version}`.
+3.  `settings.x`: A dot (.) notated path in the `settings.xml` will
+    contain the corresponding element's value. For example:
+    `<settings><offline>false</offline></settings>` is accessible via
+    `${settings.offline}`.
+4.  Java System Properties: All properties accessible via
+    `java.lang.System.getProperties()` are available as POM properties,
+    such as `${java.home}`.
+5.  `x`: Set within a \<properties /\> element or an external files, the
+    value may be used as `${someVar}`.
+
+<!-- -->
+
+    <settings xmlns="http://maven.apache.org/SETTINGS/1.0.0"
+      xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+      xsi:schemaLocation="http://maven.apache.org/SETTINGS/1.0.0
+                          http://maven.apache.org/xsd/settings-1.0.0.xsd">
+      ...
+      <profiles>
+        <profile>
+          ...
+          <properties>
+            <user.install>${user.home}/our-project</user.install>
+          </properties>
+          ...
+        </profile>
+      </profiles>
+      ...
+    </settings>
+
+The property `${user.install}` is accessible from a POM if this profile
+is active.
+
+#### Repositories
+
+Repositories are remote collections of projects from which Maven uses to
+populate the local repository of the build system. It is from this local
+repository that Maven calls it plugins and dependencies. Different
+remote repositories may contain different projects, and under the active
+profile they may be searched for a matching release or snapshot
+artifact.
+
+    <settings xmlns="http://maven.apache.org/SETTINGS/1.0.0"
+      xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+      xsi:schemaLocation="http://maven.apache.org/SETTINGS/1.0.0
+                          http://maven.apache.org/xsd/settings-1.0.0.xsd">
+      ...
+      <profiles>
+        <profile>
+          ...
+          <repositories>
+            <repository>
+              <id>codehausSnapshots</id>
+              <name>Codehaus Snapshots</name>
+              <releases>
+                <enabled>false</enabled>
+                <updatePolicy>always</updatePolicy>
+                <checksumPolicy>warn</checksumPolicy>
+              </releases>
+              <snapshots>
+                <enabled>true</enabled>
+                <updatePolicy>never</updatePolicy>
+                <checksumPolicy>fail</checksumPolicy>
+              </snapshots>
+              <url>http://snapshots.maven.codehaus.org/maven2</url>
+              <layout>default</layout>
+            </repository>
+          </repositories>
+          <pluginRepositories>
+            ...
+          </pluginRepositories>
+          ...
+        </profile>
+      </profiles>
+      ...
+    </settings>
+
+-   **releases**, **snapshots**: These are the policies for each type of
+    artifact, Release or snapshot. With these two sets, a POM has the
+    power to alter the policies for each type independent of the other
+    within a single repository. For example, one may decide to enable
+    only snapshot downloads, possibly for development purposes.
+-   **enabled**: `true` or `false` for whether this repository is
+    enabled for the respective type (`releases` or `snapshots`).
+-   **updatePolicy**: This element specifies how often updates should
+    attempt to occur. Maven will compare the local POM's timestamp
+    (stored in a repository's maven-metadata file) to the remote. The
+    choices are: `always`, `daily` (default), `interval:X` (where X is
+    an integer in minutes) or `never`.
+-   **checksumPolicy**: When Maven deploys files to the repository, it
+    also deploys corresponding checksum files. Your options are to
+    `ignore`, `fail`, or `warn` on missing or incorrect checksums.
+-   **layout**: In the above description of repositories, it was
+    mentioned that they all follow a common layout. This is mostly
+    correct. Maven 2 has a default layout for its repositories; however,
+    Maven 1.x had a different layout. Use this element to specify which
+    if it is `default` or `legacy`.
+
+#### Plugin Repositories
+
+Repositories are home to two major types of artifacts. The first are
+artifacts that are used as dependencies of other artifacts. These are
+the majority of plugins that reside within central. The other type of
+artifact is plugins. Maven plugins are themselves a special type of
+artifact. Because of this, plugin repositories may be separated from
+other repositories (although, I have yet to hear a convincing argument
+for doing so). In any case, the structure of the `pluginRepositories`
+element block is similar to the `repositories` element. The
+`pluginRepository` elements each specify a remote location of where
+Maven can find new plugins.
+
+### Active Profiles
+
+    <settings xmlns="http://maven.apache.org/SETTINGS/1.0.0"
+      xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+      xsi:schemaLocation="http://maven.apache.org/SETTINGS/1.0.0
+                          http://maven.apache.org/xsd/settings-1.0.0.xsd">
+      ...
+      <activeProfiles>
+        <activeProfile>env-test</activeProfile>
+      </activeProfiles>
+    </settings>
+
+The final piece of the `settings.xml` puzzle is the `activeProfiles`
+element. This contains a set of `activeProfile` elements, which each
+have a value of a `profile` `id`. Any `profile` `id` defined as an
+`activeProfile` will be active, reguardless of any environment settings.
+If no matching profile is found nothing will happen. For example, if
+`env-test` is an `activeProfile`, a profile in a `pom.xml` (or
+`profile.xml` with a corrosponding `id` will be active. If no such
+profile is found then execution will continue as normal.
+

Added: maven/site/trunk/content/markdown/testimonials.md
URL: http://svn.apache.org/viewvc/maven/site/trunk/content/markdown/testimonials.md?rev=1606945&view=auto
==============================================================================
--- maven/site/trunk/content/markdown/testimonials.md (added)
+++ maven/site/trunk/content/markdown/testimonials.md Mon Jun 30 23:32:18 2014
@@ -0,0 +1,21 @@
+# Testimonials
+
+Keep on going with Maven 2.0 as it really rocks! Yesterday, I started
+experimenting with it and it's such a breeze, I'm becoming already
+productive with Maven, converting our hand-written Ant scripts to POM
+(which means throwing most of the Ant stuff away and replacing it with
+tiny pom.xml files, actually). We have a web application consisting of
+many components which need to be configured for different environments
+and customers. After one day of work (including the learning curve) I
+already have the complete code base with \>1000 java files in \~20
+modules compiling.
+
+An hour ago or so after I finally got the Castor stuff working I began
+to see just how marvellous Maven works with my multi-module project.
+Seems you guys are able to keep the promises you make in the Maven
+introduction. :-)
+
+Once again, thanks for creating this great tool!
+
+-- *Christoph Schonfeld*
+

Added: maven/site/trunk/content/markdown/what-is-maven.md
URL: http://svn.apache.org/viewvc/maven/site/trunk/content/markdown/what-is-maven.md?rev=1606945&view=auto
==============================================================================
--- maven/site/trunk/content/markdown/what-is-maven.md (added)
+++ maven/site/trunk/content/markdown/what-is-maven.md Mon Jun 30 23:32:18 2014
@@ -0,0 +1,116 @@
+## Introduction
+
+Maven, a [Yiddish word](http://en.wikipedia.org/wiki/Maven) meaning
+*accumulator of knowledge*, was originally started as an attempt to
+simplify the build processes in the Jakarta Turbine project. There were
+several projects each with their own Ant build files that were all
+slightly different and JARs were checked into CVS. We wanted a standard
+way to build the projects, a clear definition of what the project
+consisted of, an easy way to publish project information and a way to
+share JARs across several projects.
+
+The result is a tool that can now be used for building and managing any
+Java-based project. We hope that we have created something that will
+make the day-to-day work of Java developers easier and generally help
+with the comprehension of any Java-based project.
+
+## Maven's Objectives
+
+Maven's primary goal is to allow a developer to comprehend the complete
+state of a development effort in the shortest period of time. In order
+to attain this goal there are several areas of concern that Maven
+attempts to deal with:
+
+-   Making the build process easy
+-   Providing a uniform build system
+-   Providing quality project information
+-   Providing guidelines for best practices development
+-   Allowing transparent migration to new features
+
+### Making the build process easy
+
+While using Maven doesn't eliminate the need to know about the
+underlying mechanisms, Maven does provide a lot of shielding from the
+details.
+
+### Providing a uniform build system
+
+Maven allows a project to build using its project object model (POM) and
+a set of plugins that are shared by all projects using Maven, providing
+a uniform build system. Once you familiarize yourself with how one Maven
+project builds you automatically know how all Maven projects build
+saving you immense amounts of time when trying to navigate many
+projects.
+
+### Providing quality project information
+
+Maven provides plenty of useful project information that is in part
+taken from your POM and in part generated from your project's sources.
+For example, Maven can provide:
+
+-   Change log document created directly from source control
+-   Cross referenced sources
+-   Mailing lists
+-   Dependency list
+-   Unit test reports including coverage
+
+As Maven improves the information set provided will improve, all of
+which will be transparent to users of Maven.
+
+Other products can also provide Maven plugins to allow their set of
+project information alongside some of the standard information given by
+Maven, all still based on the POM.
+
+### Providing guidelines for best practices development
+
+Maven aims to gather current principles for best practices development,
+and make it easy to guide a project in that direction.
+
+For example, specification, execution, and reporting of unit tests are
+part of the normal build cycle using Maven. Current unit testing best
+practices were used as guidelines:
+
+-   Keeping your test source code in a separate, but parallel source
+    tree
+-   Using test case naming conventions to locate and execute tests
+-   Have test cases setup their environment and don't rely on
+    customizing the build for test preparation.
+
+Maven also aims to assist in project workflow such as release management
+and issue tracking.
+
+Maven also suggests some guidelines on how to layout your project's
+directory structure so that once you learn the layout you can easily
+navigate any other project that uses Maven and the same defaults.
+
+### Allowing transparent migration to new features
+
+Maven provides an easy way for Maven clients to update their
+installations so that they can take advantage of any changes that been
+made to Maven itself.
+
+Installation of new or updated plugins from third parties or Maven
+itself has been made trivial for this reason.
+
+## What is Maven Not?
+
+You may have heard some of the following things about Maven:
+
+-   Maven is a site and documentation tool
+-   Maven extends Ant to let you download dependencies
+-   Maven is a set of reusable Ant scriptlets
+
+While Maven does these things, as you can read above in the "What is
+Maven?" section, these are not the only features Maven has, and its
+objectives are quite different.
+
+Maven does encourage best practices, but we realise that some projects
+may not fit with these ideals for historical reasons. While Maven is
+designed to be flexible, to an extent, in these situations and to the
+needs of different projects, it can not cater to every situation without
+making compromises to the integrity of its objectives.
+
+If you decide to use Maven, and have an unusual build structure that you
+cannot reorganise, you may have to forgo some features or the use of
+Maven altogether.
+