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.
+