changed license to Apache and package names to org.apache.maven

Project: http://git-wip-us.apache.org/repos/asf/maven-aether/repo
Commit: http://git-wip-us.apache.org/repos/asf/maven-aether/commit/6283e29e
Tree: http://git-wip-us.apache.org/repos/asf/maven-aether/tree/6283e29e
Diff: http://git-wip-us.apache.org/repos/asf/maven-aether/diff/6283e29e

Branch: refs/heads/demo
Commit: 6283e29ec16b2f8937819f38bdd8f0ef175db36b
Parents: 322fa55
Author: Hervé Boutemy <hbout...@apache.org>
Authored: Sat May 7 22:16:40 2016 +0200
Committer: Hervé Boutemy <hbout...@apache.org>
Committed: Sat May 7 22:16:40 2016 +0200

----------------------------------------------------------------------
 CONTRIBUTING.md                                 |   5 -
 aether-demo-maven-plugin/pom.xml                |  26 +-
 .../src/it/resolve-artifact/pom.xml             |  24 +-
 aether-demo-maven-plugin/src/it/settings.xml    |  24 +-
 .../examples/maven/ResolveArtifactMojo.java     | 108 ++++++++
 .../examples/maven/ResolveArtifactMojo.java     |  99 -------
 aether-demo-snippets/pom.xml                    |  26 +-
 .../maven/aether/examples/AllAetherDemos.java   |  42 +++
 .../maven/aether/examples/DeployArtifacts.java  |  66 +++++
 .../aether/examples/FindAvailableVersions.java  |  62 +++++
 .../aether/examples/FindNewestVersion.java      |  62 +++++
 .../aether/examples/GetDependencyHierarchy.java |  73 ++++++
 .../aether/examples/GetDependencyTree.java      |  60 +++++
 .../aether/examples/GetDirectDependencies.java  |  62 +++++
 .../maven/aether/examples/InstallArtifacts.java |  60 +++++
 .../maven/aether/examples/ResolveArtifact.java  |  60 +++++
 .../examples/ResolveTransitiveDependencies.java |  72 +++++
 .../maven/aether/examples/aether/Aether.java    | 131 ++++++++++
 .../aether/examples/aether/AetherDemo.java      |  78 ++++++
 .../aether/examples/aether/AetherResult.java    |  56 ++++
 .../aether/examples/guice/DemoAetherModule.java |  74 ++++++
 .../guice/GuiceRepositorySystemFactory.java     |  37 +++
 .../manual/ManualRepositorySystemFactory.java   |  62 +++++
 .../plexus/PlexusRepositorySystemFactory.java   |  53 ++++
 .../sisu/SisuRepositorySystemFactory.java       |  58 +++++
 .../maven/aether/examples/util/Booter.java      |  73 ++++++
 .../util/ConsoleDependencyGraphDumper.java      | 157 +++++++++++
 .../util/ConsoleRepositoryListener.java         | 132 ++++++++++
 .../examples/util/ConsoleTransferListener.java  | 178 +++++++++++++
 .../eclipse/aether/examples/AllAetherDemos.java |  33 ---
 .../aether/examples/DeployArtifacts.java        |  57 ----
 .../aether/examples/FindAvailableVersions.java  |  53 ----
 .../aether/examples/FindNewestVersion.java      |  52 ----
 .../aether/examples/GetDependencyHierarchy.java |  63 -----
 .../aether/examples/GetDependencyTree.java      |  50 ----
 .../aether/examples/GetDirectDependencies.java  |  52 ----
 .../aether/examples/InstallArtifacts.java       |  51 ----
 .../aether/examples/ResolveArtifact.java        |  50 ----
 .../examples/ResolveTransitiveDependencies.java |  63 -----
 .../eclipse/aether/examples/aether/Aether.java  | 120 ---------
 .../aether/examples/aether/AetherDemo.java      |  67 -----
 .../aether/examples/aether/AetherResult.java    |  45 ----
 .../aether/examples/guice/DemoAetherModule.java |  65 -----
 .../guice/GuiceRepositorySystemFactory.java     |  28 --
 .../manual/ManualRepositorySystemFactory.java   |  53 ----
 .../plexus/PlexusRepositorySystemFactory.java   |  44 ----
 .../sisu/SisuRepositorySystemFactory.java       |  49 ----
 .../eclipse/aether/examples/util/Booter.java    |  64 -----
 .../util/ConsoleDependencyGraphDumper.java      | 148 -----------
 .../util/ConsoleRepositoryListener.java         | 123 ---------
 .../examples/util/ConsoleTransferListener.java  | 169 ------------
 epl-v10.html                                    | 261 -------------------
 notice.html                                     | 107 --------
 pom.xml                                         | 130 +++------
 54 files changed, 1925 insertions(+), 2092 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/maven-aether/blob/6283e29e/CONTRIBUTING.md
----------------------------------------------------------------------
diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md
deleted file mode 100644
index 2a98799..0000000
--- a/CONTRIBUTING.md
+++ /dev/null
@@ -1,5 +0,0 @@
-Contributing Patches
-====================
-Please be sure to read our [contribution 
guide](http://www.eclipse.org/aether/contribution/) first to avoid running down
-the wrong path. Non-conforming contributions are less likely to get accepted 
or might not be noticed by the committers
-at all.

http://git-wip-us.apache.org/repos/asf/maven-aether/blob/6283e29e/aether-demo-maven-plugin/pom.xml
----------------------------------------------------------------------
diff --git a/aether-demo-maven-plugin/pom.xml b/aether-demo-maven-plugin/pom.xml
index 969654c..b8a7481 100644
--- a/aether-demo-maven-plugin/pom.xml
+++ b/aether-demo-maven-plugin/pom.xml
@@ -1,21 +1,29 @@
 <?xml version="1.0" encoding="UTF-8"?>
 
 <!--
- ~ Copyright (c) 2010, 2014 Sonatype, Inc.
- ~ All rights reserved. This program and the accompanying materials
- ~ are made available under the terms of the Eclipse Public License v1.0
- ~ which accompanies this distribution, and is available at
- ~ http://www.eclipse.org/legal/epl-v10.html
- ~
- ~ Contributors:
- ~    Sonatype, Inc. - initial API and implementation
+  Licensed to the Apache Software Foundation (ASF) under one
+  or more contributor license agreements.  See the NOTICE file
+  distributed with this work for additional information
+  regarding copyright ownership.  The ASF licenses this file
+  to you under the Apache License, Version 2.0 (the
+  "License"); you may not use this file except in compliance
+  with the License.  You may obtain a copy of the License at
+
+  http://www.apache.org/licenses/LICENSE-2.0
+
+  Unless required by applicable law or agreed to in writing,
+  software distributed under the License is distributed on an
+  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+  KIND, either express or implied.  See the License for the
+  specific language governing permissions and limitations
+  under the License.
 -->
 
 <project xmlns="http://maven.apache.org/POM/4.0.0"; 
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"; 
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 
http://maven.apache.org/xsd/maven-4.0.0.xsd";>
   <modelVersion>4.0.0</modelVersion>
 
   <parent>
-    <groupId>org.eclipse.aether</groupId>
+    <groupId>org.apache.maven.aether</groupId>
     <artifactId>aether-demos</artifactId>
     <version>1.0.0-SNAPSHOT</version>
   </parent>

http://git-wip-us.apache.org/repos/asf/maven-aether/blob/6283e29e/aether-demo-maven-plugin/src/it/resolve-artifact/pom.xml
----------------------------------------------------------------------
diff --git a/aether-demo-maven-plugin/src/it/resolve-artifact/pom.xml 
b/aether-demo-maven-plugin/src/it/resolve-artifact/pom.xml
index 41e6721..1879d40 100644
--- a/aether-demo-maven-plugin/src/it/resolve-artifact/pom.xml
+++ b/aether-demo-maven-plugin/src/it/resolve-artifact/pom.xml
@@ -1,14 +1,22 @@
 <?xml version="1.0" encoding="UTF-8"?>
 
 <!--
- ~ Copyright (c) 2010, 2011 Sonatype, Inc.
- ~ All rights reserved. This program and the accompanying materials
- ~ are made available under the terms of the Eclipse Public License v1.0
- ~ which accompanies this distribution, and is available at
- ~ http://www.eclipse.org/legal/epl-v10.html
- ~
- ~ Contributors:
- ~    Sonatype, Inc. - initial API and implementation
+  Licensed to the Apache Software Foundation (ASF) under one
+  or more contributor license agreements.  See the NOTICE file
+  distributed with this work for additional information
+  regarding copyright ownership.  The ASF licenses this file
+  to you under the Apache License, Version 2.0 (the
+  "License"); you may not use this file except in compliance
+  with the License.  You may obtain a copy of the License at
+
+  http://www.apache.org/licenses/LICENSE-2.0
+
+  Unless required by applicable law or agreed to in writing,
+  software distributed under the License is distributed on an
+  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+  KIND, either express or implied.  See the License for the
+  specific language governing permissions and limitations
+  under the License.
 -->
 
 <project xmlns="http://maven.apache.org/POM/4.0.0"; 
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"; 
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 
http://maven.apache.org/xsd/maven-4.0.0.xsd";>

http://git-wip-us.apache.org/repos/asf/maven-aether/blob/6283e29e/aether-demo-maven-plugin/src/it/settings.xml
----------------------------------------------------------------------
diff --git a/aether-demo-maven-plugin/src/it/settings.xml 
b/aether-demo-maven-plugin/src/it/settings.xml
index 7150c15..dd86293 100644
--- a/aether-demo-maven-plugin/src/it/settings.xml
+++ b/aether-demo-maven-plugin/src/it/settings.xml
@@ -1,14 +1,22 @@
 <?xml version="1.0" encoding="UTF-8"?>
 
 <!--
- ~ Copyright (c) 2010, 2011 Sonatype, Inc.
- ~ All rights reserved. This program and the accompanying materials
- ~ are made available under the terms of the Eclipse Public License v1.0
- ~ which accompanies this distribution, and is available at
- ~ http://www.eclipse.org/legal/epl-v10.html
- ~
- ~ Contributors:
- ~    Sonatype, Inc. - initial API and implementation
+  Licensed to the Apache Software Foundation (ASF) under one
+  or more contributor license agreements.  See the NOTICE file
+  distributed with this work for additional information
+  regarding copyright ownership.  The ASF licenses this file
+  to you under the Apache License, Version 2.0 (the
+  "License"); you may not use this file except in compliance
+  with the License.  You may obtain a copy of the License at
+
+  http://www.apache.org/licenses/LICENSE-2.0
+
+  Unless required by applicable law or agreed to in writing,
+  software distributed under the License is distributed on an
+  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+  KIND, either express or implied.  See the License for the
+  specific language governing permissions and limitations
+  under the License.
 -->
 
 <settings>

http://git-wip-us.apache.org/repos/asf/maven-aether/blob/6283e29e/aether-demo-maven-plugin/src/main/java/org/apache/maven/aether/examples/maven/ResolveArtifactMojo.java
----------------------------------------------------------------------
diff --git 
a/aether-demo-maven-plugin/src/main/java/org/apache/maven/aether/examples/maven/ResolveArtifactMojo.java
 
b/aether-demo-maven-plugin/src/main/java/org/apache/maven/aether/examples/maven/ResolveArtifactMojo.java
new file mode 100644
index 0000000..eae0d53
--- /dev/null
+++ 
b/aether-demo-maven-plugin/src/main/java/org/apache/maven/aether/examples/maven/ResolveArtifactMojo.java
@@ -0,0 +1,108 @@
+package org.apache.maven.aether.examples.maven;
+
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ * 
+ *  http://www.apache.org/licenses/LICENSE-2.0
+ * 
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+import java.util.List;
+
+import org.apache.maven.plugin.AbstractMojo;
+import org.apache.maven.plugin.MojoExecutionException;
+import org.apache.maven.plugin.MojoFailureException;
+import org.eclipse.aether.RepositorySystem;
+import org.eclipse.aether.RepositorySystemSession;
+import org.eclipse.aether.artifact.Artifact;
+import org.eclipse.aether.artifact.DefaultArtifact;
+import org.eclipse.aether.repository.RemoteRepository;
+import org.eclipse.aether.resolution.ArtifactRequest;
+import org.eclipse.aether.resolution.ArtifactResolutionException;
+import org.eclipse.aether.resolution.ArtifactResult;
+
+/**
+ * Resolves a single artifact (not including its transitive dependencies).
+ * 
+ * @goal resolve-artifact
+ */
+public class ResolveArtifactMojo
+    extends AbstractMojo
+{
+
+    /**
+     * The entry point to Aether, i.e. the component doing all the work.
+     * 
+     * @component
+     */
+    private RepositorySystem repoSystem;
+
+    /**
+     * The current repository/network configuration of Maven.
+     * 
+     * @parameter default-value="${repositorySystemSession}"
+     * @readonly
+     */
+    private RepositorySystemSession repoSession;
+
+    /**
+     * The project's remote repositories to use for the resolution.
+     * 
+     * @parameter default-value="${project.remoteProjectRepositories}"
+     * @readonly
+     */
+    private List<RemoteRepository> remoteRepos;
+
+    /**
+     * The {@code 
<groupId>:<artifactId>[:<extension>[:<classifier>]]:<version>} of the artifact 
to resolve.
+     * 
+     * @parameter expression="${aether.artifactCoords}"
+     */
+    private String artifactCoords;
+
+    public void execute()
+        throws MojoExecutionException, MojoFailureException
+    {
+        Artifact artifact;
+        try
+        {
+            artifact = new DefaultArtifact( artifactCoords );
+        }
+        catch ( IllegalArgumentException e )
+        {
+            throw new MojoFailureException( e.getMessage(), e );
+        }
+
+        ArtifactRequest request = new ArtifactRequest();
+        request.setArtifact( artifact );
+        request.setRepositories( remoteRepos );
+
+        getLog().info( "Resolving artifact " + artifact + " from " + 
remoteRepos );
+
+        ArtifactResult result;
+        try
+        {
+            result = repoSystem.resolveArtifact( repoSession, request );
+        }
+        catch ( ArtifactResolutionException e )
+        {
+            throw new MojoExecutionException( e.getMessage(), e );
+        }
+
+        getLog().info( "Resolved artifact " + artifact + " to " + 
result.getArtifact().getFile() + " from "
+                           + result.getRepository() );
+    }
+
+}

http://git-wip-us.apache.org/repos/asf/maven-aether/blob/6283e29e/aether-demo-maven-plugin/src/main/java/org/eclipse/aether/examples/maven/ResolveArtifactMojo.java
----------------------------------------------------------------------
diff --git 
a/aether-demo-maven-plugin/src/main/java/org/eclipse/aether/examples/maven/ResolveArtifactMojo.java
 
b/aether-demo-maven-plugin/src/main/java/org/eclipse/aether/examples/maven/ResolveArtifactMojo.java
deleted file mode 100644
index 1039bc1..0000000
--- 
a/aether-demo-maven-plugin/src/main/java/org/eclipse/aether/examples/maven/ResolveArtifactMojo.java
+++ /dev/null
@@ -1,99 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2010, 2013 Sonatype, Inc.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- *    Sonatype, Inc. - initial API and implementation
- 
*******************************************************************************/
-package org.eclipse.aether.examples.maven;
-
-import java.util.List;
-
-import org.apache.maven.plugin.AbstractMojo;
-import org.apache.maven.plugin.MojoExecutionException;
-import org.apache.maven.plugin.MojoFailureException;
-import org.eclipse.aether.RepositorySystem;
-import org.eclipse.aether.RepositorySystemSession;
-import org.eclipse.aether.artifact.Artifact;
-import org.eclipse.aether.artifact.DefaultArtifact;
-import org.eclipse.aether.repository.RemoteRepository;
-import org.eclipse.aether.resolution.ArtifactRequest;
-import org.eclipse.aether.resolution.ArtifactResolutionException;
-import org.eclipse.aether.resolution.ArtifactResult;
-
-/**
- * Resolves a single artifact (not including its transitive dependencies).
- * 
- * @goal resolve-artifact
- */
-public class ResolveArtifactMojo
-    extends AbstractMojo
-{
-
-    /**
-     * The entry point to Aether, i.e. the component doing all the work.
-     * 
-     * @component
-     */
-    private RepositorySystem repoSystem;
-
-    /**
-     * The current repository/network configuration of Maven.
-     * 
-     * @parameter default-value="${repositorySystemSession}"
-     * @readonly
-     */
-    private RepositorySystemSession repoSession;
-
-    /**
-     * The project's remote repositories to use for the resolution.
-     * 
-     * @parameter default-value="${project.remoteProjectRepositories}"
-     * @readonly
-     */
-    private List<RemoteRepository> remoteRepos;
-
-    /**
-     * The {@code 
<groupId>:<artifactId>[:<extension>[:<classifier>]]:<version>} of the artifact 
to resolve.
-     * 
-     * @parameter expression="${aether.artifactCoords}"
-     */
-    private String artifactCoords;
-
-    public void execute()
-        throws MojoExecutionException, MojoFailureException
-    {
-        Artifact artifact;
-        try
-        {
-            artifact = new DefaultArtifact( artifactCoords );
-        }
-        catch ( IllegalArgumentException e )
-        {
-            throw new MojoFailureException( e.getMessage(), e );
-        }
-
-        ArtifactRequest request = new ArtifactRequest();
-        request.setArtifact( artifact );
-        request.setRepositories( remoteRepos );
-
-        getLog().info( "Resolving artifact " + artifact + " from " + 
remoteRepos );
-
-        ArtifactResult result;
-        try
-        {
-            result = repoSystem.resolveArtifact( repoSession, request );
-        }
-        catch ( ArtifactResolutionException e )
-        {
-            throw new MojoExecutionException( e.getMessage(), e );
-        }
-
-        getLog().info( "Resolved artifact " + artifact + " to " + 
result.getArtifact().getFile() + " from "
-                           + result.getRepository() );
-    }
-
-}

http://git-wip-us.apache.org/repos/asf/maven-aether/blob/6283e29e/aether-demo-snippets/pom.xml
----------------------------------------------------------------------
diff --git a/aether-demo-snippets/pom.xml b/aether-demo-snippets/pom.xml
index 57d1a70..02beab4 100644
--- a/aether-demo-snippets/pom.xml
+++ b/aether-demo-snippets/pom.xml
@@ -1,21 +1,29 @@
 <?xml version="1.0" encoding="UTF-8"?>
 
 <!--
- ~ Copyright (c) 2010, 2014 Sonatype, Inc.
- ~ All rights reserved. This program and the accompanying materials
- ~ are made available under the terms of the Eclipse Public License v1.0
- ~ which accompanies this distribution, and is available at
- ~ http://www.eclipse.org/legal/epl-v10.html
- ~
- ~ Contributors:
- ~    Sonatype, Inc. - initial API and implementation
+  Licensed to the Apache Software Foundation (ASF) under one
+  or more contributor license agreements.  See the NOTICE file
+  distributed with this work for additional information
+  regarding copyright ownership.  The ASF licenses this file
+  to you under the Apache License, Version 2.0 (the
+  "License"); you may not use this file except in compliance
+  with the License.  You may obtain a copy of the License at
+
+  http://www.apache.org/licenses/LICENSE-2.0
+
+  Unless required by applicable law or agreed to in writing,
+  software distributed under the License is distributed on an
+  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+  KIND, either express or implied.  See the License for the
+  specific language governing permissions and limitations
+  under the License.
 -->
 
 <project xmlns="http://maven.apache.org/POM/4.0.0"; 
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"; 
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 
http://maven.apache.org/xsd/maven-4.0.0.xsd";>
   <modelVersion>4.0.0</modelVersion>
 
   <parent>
-    <groupId>org.eclipse.aether</groupId>
+    <groupId>org.apache.maven.aether</groupId>
     <artifactId>aether-demos</artifactId>
     <version>1.0.0-SNAPSHOT</version>
   </parent>

http://git-wip-us.apache.org/repos/asf/maven-aether/blob/6283e29e/aether-demo-snippets/src/main/java/org/apache/maven/aether/examples/AllAetherDemos.java
----------------------------------------------------------------------
diff --git 
a/aether-demo-snippets/src/main/java/org/apache/maven/aether/examples/AllAetherDemos.java
 
b/aether-demo-snippets/src/main/java/org/apache/maven/aether/examples/AllAetherDemos.java
new file mode 100644
index 0000000..64f5b89
--- /dev/null
+++ 
b/aether-demo-snippets/src/main/java/org/apache/maven/aether/examples/AllAetherDemos.java
@@ -0,0 +1,42 @@
+package org.apache.maven.aether.examples;
+
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ * 
+ *  http://www.apache.org/licenses/LICENSE-2.0
+ * 
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+/**
+ * Runs all demos at once.
+ */
+public class AllAetherDemos
+{
+
+    public static void main( String[] args )
+        throws Exception
+    {
+        FindAvailableVersions.main( args );
+        FindNewestVersion.main( args );
+        GetDirectDependencies.main( args );
+        GetDependencyTree.main( args );
+        GetDependencyHierarchy.main( args );
+        ResolveArtifact.main( args );
+        ResolveTransitiveDependencies.main( args );
+        InstallArtifacts.main( args );
+        DeployArtifacts.main( args );
+    }
+
+}

http://git-wip-us.apache.org/repos/asf/maven-aether/blob/6283e29e/aether-demo-snippets/src/main/java/org/apache/maven/aether/examples/DeployArtifacts.java
----------------------------------------------------------------------
diff --git 
a/aether-demo-snippets/src/main/java/org/apache/maven/aether/examples/DeployArtifacts.java
 
b/aether-demo-snippets/src/main/java/org/apache/maven/aether/examples/DeployArtifacts.java
new file mode 100644
index 0000000..da6396d
--- /dev/null
+++ 
b/aether-demo-snippets/src/main/java/org/apache/maven/aether/examples/DeployArtifacts.java
@@ -0,0 +1,66 @@
+package org.apache.maven.aether.examples;
+
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ * 
+ *  http://www.apache.org/licenses/LICENSE-2.0
+ * 
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+import java.io.File;
+
+import org.apache.maven.aether.examples.util.Booter;
+import org.eclipse.aether.RepositorySystem;
+import org.eclipse.aether.RepositorySystemSession;
+import org.eclipse.aether.artifact.Artifact;
+import org.eclipse.aether.artifact.DefaultArtifact;
+import org.eclipse.aether.deployment.DeployRequest;
+import org.eclipse.aether.repository.RemoteRepository;
+import org.eclipse.aether.util.artifact.SubArtifact;
+
+/**
+ * Deploys a JAR and its POM to a remote repository.
+ */
+public class DeployArtifacts
+{
+
+    public static void main( String[] args )
+        throws Exception
+    {
+        System.out.println( 
"------------------------------------------------------------" );
+        System.out.println( DeployArtifacts.class.getSimpleName() );
+
+        RepositorySystem system = Booter.newRepositorySystem();
+
+        RepositorySystemSession session = Booter.newRepositorySystemSession( 
system );
+
+        Artifact jarArtifact = new DefaultArtifact( "test", 
"org.eclipse.aether.examples", "", "jar", "0.1-SNAPSHOT" );
+        jarArtifact = jarArtifact.setFile( new File( "src/main/data/demo.jar" 
) );
+
+        Artifact pomArtifact = new SubArtifact( jarArtifact, "", "pom" );
+        pomArtifact = pomArtifact.setFile( new File( "pom.xml" ) );
+
+        RemoteRepository distRepo =
+            new RemoteRepository.Builder( "org.eclipse.aether.examples", 
"default",
+                                  new File( "target/dist-repo" 
).toURI().toString() ).build();
+
+        DeployRequest deployRequest = new DeployRequest();
+        deployRequest.addArtifact( jarArtifact ).addArtifact( pomArtifact );
+        deployRequest.setRepository( distRepo );
+
+        system.deploy( session, deployRequest );
+    }
+
+}

http://git-wip-us.apache.org/repos/asf/maven-aether/blob/6283e29e/aether-demo-snippets/src/main/java/org/apache/maven/aether/examples/FindAvailableVersions.java
----------------------------------------------------------------------
diff --git 
a/aether-demo-snippets/src/main/java/org/apache/maven/aether/examples/FindAvailableVersions.java
 
b/aether-demo-snippets/src/main/java/org/apache/maven/aether/examples/FindAvailableVersions.java
new file mode 100644
index 0000000..30d926c
--- /dev/null
+++ 
b/aether-demo-snippets/src/main/java/org/apache/maven/aether/examples/FindAvailableVersions.java
@@ -0,0 +1,62 @@
+package org.apache.maven.aether.examples;
+
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ * 
+ *  http://www.apache.org/licenses/LICENSE-2.0
+ * 
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+import java.util.List;
+
+import org.apache.maven.aether.examples.util.Booter;
+import org.eclipse.aether.RepositorySystem;
+import org.eclipse.aether.RepositorySystemSession;
+import org.eclipse.aether.artifact.Artifact;
+import org.eclipse.aether.artifact.DefaultArtifact;
+import org.eclipse.aether.resolution.VersionRangeRequest;
+import org.eclipse.aether.resolution.VersionRangeResult;
+import org.eclipse.aether.version.Version;
+
+/**
+ * Determines all available versions of an artifact.
+ */
+public class FindAvailableVersions
+{
+
+    public static void main( String[] args )
+        throws Exception
+    {
+        System.out.println( 
"------------------------------------------------------------" );
+        System.out.println( FindAvailableVersions.class.getSimpleName() );
+
+        RepositorySystem system = Booter.newRepositorySystem();
+
+        RepositorySystemSession session = Booter.newRepositorySystemSession( 
system );
+
+        Artifact artifact = new DefaultArtifact( 
"org.eclipse.aether:aether-util:[0,)" );
+
+        VersionRangeRequest rangeRequest = new VersionRangeRequest();
+        rangeRequest.setArtifact( artifact );
+        rangeRequest.setRepositories( Booter.newRepositories( system, session 
) );
+
+        VersionRangeResult rangeResult = system.resolveVersionRange( session, 
rangeRequest );
+
+        List<Version> versions = rangeResult.getVersions();
+
+        System.out.println( "Available versions " + versions );
+    }
+
+}

http://git-wip-us.apache.org/repos/asf/maven-aether/blob/6283e29e/aether-demo-snippets/src/main/java/org/apache/maven/aether/examples/FindNewestVersion.java
----------------------------------------------------------------------
diff --git 
a/aether-demo-snippets/src/main/java/org/apache/maven/aether/examples/FindNewestVersion.java
 
b/aether-demo-snippets/src/main/java/org/apache/maven/aether/examples/FindNewestVersion.java
new file mode 100644
index 0000000..a4bbc83
--- /dev/null
+++ 
b/aether-demo-snippets/src/main/java/org/apache/maven/aether/examples/FindNewestVersion.java
@@ -0,0 +1,62 @@
+package org.apache.maven.aether.examples;
+
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ * 
+ *  http://www.apache.org/licenses/LICENSE-2.0
+ * 
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+import org.apache.maven.aether.examples.util.Booter;
+
+import org.eclipse.aether.RepositorySystem;
+import org.eclipse.aether.RepositorySystemSession;
+import org.eclipse.aether.artifact.Artifact;
+import org.eclipse.aether.artifact.DefaultArtifact;
+import org.eclipse.aether.resolution.VersionRangeRequest;
+import org.eclipse.aether.resolution.VersionRangeResult;
+import org.eclipse.aether.version.Version;
+
+/**
+ * Determines the newest version of an artifact.
+ */
+public class FindNewestVersion
+{
+
+    public static void main( String[] args )
+        throws Exception
+    {
+        System.out.println( 
"------------------------------------------------------------" );
+        System.out.println( FindNewestVersion.class.getSimpleName() );
+
+        RepositorySystem system = Booter.newRepositorySystem();
+
+        RepositorySystemSession session = Booter.newRepositorySystemSession( 
system );
+
+        Artifact artifact = new DefaultArtifact( 
"org.eclipse.aether:aether-util:[0,)" );
+
+        VersionRangeRequest rangeRequest = new VersionRangeRequest();
+        rangeRequest.setArtifact( artifact );
+        rangeRequest.setRepositories( Booter.newRepositories( system, session 
) );
+
+        VersionRangeResult rangeResult = system.resolveVersionRange( session, 
rangeRequest );
+
+        Version newestVersion = rangeResult.getHighestVersion();
+
+        System.out.println( "Newest version " + newestVersion + " from 
repository "
+            + rangeResult.getRepository( newestVersion ) );
+    }
+
+}

http://git-wip-us.apache.org/repos/asf/maven-aether/blob/6283e29e/aether-demo-snippets/src/main/java/org/apache/maven/aether/examples/GetDependencyHierarchy.java
----------------------------------------------------------------------
diff --git 
a/aether-demo-snippets/src/main/java/org/apache/maven/aether/examples/GetDependencyHierarchy.java
 
b/aether-demo-snippets/src/main/java/org/apache/maven/aether/examples/GetDependencyHierarchy.java
new file mode 100644
index 0000000..73d1d33
--- /dev/null
+++ 
b/aether-demo-snippets/src/main/java/org/apache/maven/aether/examples/GetDependencyHierarchy.java
@@ -0,0 +1,73 @@
+package org.apache.maven.aether.examples;
+
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ * 
+ *  http://www.apache.org/licenses/LICENSE-2.0
+ * 
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+import org.apache.maven.aether.examples.util.Booter;
+import org.apache.maven.aether.examples.util.ConsoleDependencyGraphDumper;
+
+import org.eclipse.aether.DefaultRepositorySystemSession;
+import org.eclipse.aether.RepositorySystem;
+import org.eclipse.aether.artifact.Artifact;
+import org.eclipse.aether.artifact.DefaultArtifact;
+import org.eclipse.aether.collection.CollectRequest;
+import org.eclipse.aether.collection.CollectResult;
+import org.eclipse.aether.resolution.ArtifactDescriptorRequest;
+import org.eclipse.aether.resolution.ArtifactDescriptorResult;
+import org.eclipse.aether.util.graph.manager.DependencyManagerUtils;
+import org.eclipse.aether.util.graph.transformer.ConflictResolver;
+
+/**
+ * Visualizes the transitive dependencies of an artifact similar to m2e's 
dependency hierarchy view.
+ */
+public class GetDependencyHierarchy
+{
+
+    public static void main( String[] args )
+        throws Exception
+    {
+        System.out.println( 
"------------------------------------------------------------" );
+        System.out.println( GetDependencyHierarchy.class.getSimpleName() );
+
+        RepositorySystem system = Booter.newRepositorySystem();
+
+        DefaultRepositorySystemSession session = 
Booter.newRepositorySystemSession( system );
+
+        session.setConfigProperty( ConflictResolver.CONFIG_PROP_VERBOSE, true 
);
+        session.setConfigProperty( DependencyManagerUtils.CONFIG_PROP_VERBOSE, 
true );
+
+        Artifact artifact = new DefaultArtifact( 
"org.apache.maven:maven-aether-provider:3.1.0" );
+
+        ArtifactDescriptorRequest descriptorRequest = new 
ArtifactDescriptorRequest();
+        descriptorRequest.setArtifact( artifact );
+        descriptorRequest.setRepositories( Booter.newRepositories( system, 
session ) );
+        ArtifactDescriptorResult descriptorResult = 
system.readArtifactDescriptor( session, descriptorRequest );
+
+        CollectRequest collectRequest = new CollectRequest();
+        collectRequest.setRootArtifact( descriptorResult.getArtifact() );
+        collectRequest.setDependencies( descriptorResult.getDependencies() );
+        collectRequest.setManagedDependencies( 
descriptorResult.getManagedDependencies() );
+        collectRequest.setRepositories( descriptorRequest.getRepositories() );
+
+        CollectResult collectResult = system.collectDependencies( session, 
collectRequest );
+
+        collectResult.getRoot().accept( new ConsoleDependencyGraphDumper() );
+    }
+
+}

http://git-wip-us.apache.org/repos/asf/maven-aether/blob/6283e29e/aether-demo-snippets/src/main/java/org/apache/maven/aether/examples/GetDependencyTree.java
----------------------------------------------------------------------
diff --git 
a/aether-demo-snippets/src/main/java/org/apache/maven/aether/examples/GetDependencyTree.java
 
b/aether-demo-snippets/src/main/java/org/apache/maven/aether/examples/GetDependencyTree.java
new file mode 100644
index 0000000..82c6adc
--- /dev/null
+++ 
b/aether-demo-snippets/src/main/java/org/apache/maven/aether/examples/GetDependencyTree.java
@@ -0,0 +1,60 @@
+package org.apache.maven.aether.examples;
+
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ * 
+ *  http://www.apache.org/licenses/LICENSE-2.0
+ * 
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+import org.apache.maven.aether.examples.util.Booter;
+import org.apache.maven.aether.examples.util.ConsoleDependencyGraphDumper;
+
+import org.eclipse.aether.RepositorySystem;
+import org.eclipse.aether.RepositorySystemSession;
+import org.eclipse.aether.artifact.Artifact;
+import org.eclipse.aether.artifact.DefaultArtifact;
+import org.eclipse.aether.collection.CollectRequest;
+import org.eclipse.aether.collection.CollectResult;
+import org.eclipse.aether.graph.Dependency;
+
+/**
+ * Collects the transitive dependencies of an artifact.
+ */
+public class GetDependencyTree
+{
+
+    public static void main( String[] args )
+        throws Exception
+    {
+        System.out.println( 
"------------------------------------------------------------" );
+        System.out.println( GetDependencyTree.class.getSimpleName() );
+
+        RepositorySystem system = Booter.newRepositorySystem();
+
+        RepositorySystemSession session = Booter.newRepositorySystemSession( 
system );
+
+        Artifact artifact = new DefaultArtifact( 
"org.apache.maven:maven-aether-provider:3.1.0" );
+
+        CollectRequest collectRequest = new CollectRequest();
+        collectRequest.setRoot( new Dependency( artifact, "" ) );
+        collectRequest.setRepositories( Booter.newRepositories( system, 
session ) );
+
+        CollectResult collectResult = system.collectDependencies( session, 
collectRequest );
+
+        collectResult.getRoot().accept( new ConsoleDependencyGraphDumper() );
+    }
+
+}

http://git-wip-us.apache.org/repos/asf/maven-aether/blob/6283e29e/aether-demo-snippets/src/main/java/org/apache/maven/aether/examples/GetDirectDependencies.java
----------------------------------------------------------------------
diff --git 
a/aether-demo-snippets/src/main/java/org/apache/maven/aether/examples/GetDirectDependencies.java
 
b/aether-demo-snippets/src/main/java/org/apache/maven/aether/examples/GetDirectDependencies.java
new file mode 100644
index 0000000..1fcaf9e
--- /dev/null
+++ 
b/aether-demo-snippets/src/main/java/org/apache/maven/aether/examples/GetDirectDependencies.java
@@ -0,0 +1,62 @@
+package org.apache.maven.aether.examples;
+
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ * 
+ *  http://www.apache.org/licenses/LICENSE-2.0
+ * 
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+import org.apache.maven.aether.examples.util.Booter;
+
+import org.eclipse.aether.RepositorySystem;
+import org.eclipse.aether.RepositorySystemSession;
+import org.eclipse.aether.artifact.Artifact;
+import org.eclipse.aether.artifact.DefaultArtifact;
+import org.eclipse.aether.graph.Dependency;
+import org.eclipse.aether.resolution.ArtifactDescriptorRequest;
+import org.eclipse.aether.resolution.ArtifactDescriptorResult;
+
+/**
+ * Determines the direct dependencies of an artifact as declared in its 
artifact descriptor (POM).
+ */
+public class GetDirectDependencies
+{
+
+    public static void main( String[] args )
+        throws Exception
+    {
+        System.out.println( 
"------------------------------------------------------------" );
+        System.out.println( GetDirectDependencies.class.getSimpleName() );
+
+        RepositorySystem system = Booter.newRepositorySystem();
+
+        RepositorySystemSession session = Booter.newRepositorySystemSession( 
system );
+
+        Artifact artifact = new DefaultArtifact( 
"org.eclipse.aether:aether-impl:1.0.0.v20140518" );
+
+        ArtifactDescriptorRequest descriptorRequest = new 
ArtifactDescriptorRequest();
+        descriptorRequest.setArtifact( artifact );
+        descriptorRequest.setRepositories( Booter.newRepositories( system, 
session ) );
+
+        ArtifactDescriptorResult descriptorResult = 
system.readArtifactDescriptor( session, descriptorRequest );
+
+        for ( Dependency dependency : descriptorResult.getDependencies() )
+        {
+            System.out.println( dependency );
+        }
+    }
+
+}

http://git-wip-us.apache.org/repos/asf/maven-aether/blob/6283e29e/aether-demo-snippets/src/main/java/org/apache/maven/aether/examples/InstallArtifacts.java
----------------------------------------------------------------------
diff --git 
a/aether-demo-snippets/src/main/java/org/apache/maven/aether/examples/InstallArtifacts.java
 
b/aether-demo-snippets/src/main/java/org/apache/maven/aether/examples/InstallArtifacts.java
new file mode 100644
index 0000000..7026f0a
--- /dev/null
+++ 
b/aether-demo-snippets/src/main/java/org/apache/maven/aether/examples/InstallArtifacts.java
@@ -0,0 +1,60 @@
+package org.apache.maven.aether.examples;
+
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ * 
+ *  http://www.apache.org/licenses/LICENSE-2.0
+ * 
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+import java.io.File;
+
+import org.apache.maven.aether.examples.util.Booter;
+import org.eclipse.aether.RepositorySystem;
+import org.eclipse.aether.RepositorySystemSession;
+import org.eclipse.aether.artifact.Artifact;
+import org.eclipse.aether.artifact.DefaultArtifact;
+import org.eclipse.aether.installation.InstallRequest;
+import org.eclipse.aether.util.artifact.SubArtifact;
+
+/**
+ * Installs a JAR and its POM to the local repository.
+ */
+public class InstallArtifacts
+{
+
+    public static void main( String[] args )
+        throws Exception
+    {
+        System.out.println( 
"------------------------------------------------------------" );
+        System.out.println( InstallArtifacts.class.getSimpleName() );
+
+        RepositorySystem system = Booter.newRepositorySystem();
+
+        RepositorySystemSession session = Booter.newRepositorySystemSession( 
system );
+
+        Artifact jarArtifact = new DefaultArtifact( "test", 
"org.eclipse.aether.examples", "", "jar", "0.1-SNAPSHOT" );
+        jarArtifact = jarArtifact.setFile( new File( "src/main/data/demo.jar" 
) );
+
+        Artifact pomArtifact = new SubArtifact( jarArtifact, "", "pom" );
+        pomArtifact = pomArtifact.setFile( new File( "pom.xml" ) );
+
+        InstallRequest installRequest = new InstallRequest();
+        installRequest.addArtifact( jarArtifact ).addArtifact( pomArtifact );
+
+        system.install( session, installRequest );
+    }
+
+}

http://git-wip-us.apache.org/repos/asf/maven-aether/blob/6283e29e/aether-demo-snippets/src/main/java/org/apache/maven/aether/examples/ResolveArtifact.java
----------------------------------------------------------------------
diff --git 
a/aether-demo-snippets/src/main/java/org/apache/maven/aether/examples/ResolveArtifact.java
 
b/aether-demo-snippets/src/main/java/org/apache/maven/aether/examples/ResolveArtifact.java
new file mode 100644
index 0000000..10153de
--- /dev/null
+++ 
b/aether-demo-snippets/src/main/java/org/apache/maven/aether/examples/ResolveArtifact.java
@@ -0,0 +1,60 @@
+package org.apache.maven.aether.examples;
+
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ * 
+ *  http://www.apache.org/licenses/LICENSE-2.0
+ * 
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+import org.apache.maven.aether.examples.util.Booter;
+
+import org.eclipse.aether.RepositorySystem;
+import org.eclipse.aether.RepositorySystemSession;
+import org.eclipse.aether.artifact.Artifact;
+import org.eclipse.aether.artifact.DefaultArtifact;
+import org.eclipse.aether.resolution.ArtifactRequest;
+import org.eclipse.aether.resolution.ArtifactResult;
+
+/**
+ * Resolves a single artifact.
+ */
+public class ResolveArtifact
+{
+
+    public static void main( String[] args )
+        throws Exception
+    {
+        System.out.println( 
"------------------------------------------------------------" );
+        System.out.println( ResolveArtifact.class.getSimpleName() );
+
+        RepositorySystem system = Booter.newRepositorySystem();
+
+        RepositorySystemSession session = Booter.newRepositorySystemSession( 
system );
+
+        Artifact artifact = new DefaultArtifact( 
"org.eclipse.aether:aether-util:1.0.0.v20140518" );
+
+        ArtifactRequest artifactRequest = new ArtifactRequest();
+        artifactRequest.setArtifact( artifact );
+        artifactRequest.setRepositories( Booter.newRepositories( system, 
session ) );
+
+        ArtifactResult artifactResult = system.resolveArtifact( session, 
artifactRequest );
+
+        artifact = artifactResult.getArtifact();
+
+        System.out.println( artifact + " resolved to  " + artifact.getFile() );
+    }
+
+}

http://git-wip-us.apache.org/repos/asf/maven-aether/blob/6283e29e/aether-demo-snippets/src/main/java/org/apache/maven/aether/examples/ResolveTransitiveDependencies.java
----------------------------------------------------------------------
diff --git 
a/aether-demo-snippets/src/main/java/org/apache/maven/aether/examples/ResolveTransitiveDependencies.java
 
b/aether-demo-snippets/src/main/java/org/apache/maven/aether/examples/ResolveTransitiveDependencies.java
new file mode 100644
index 0000000..aacf33c
--- /dev/null
+++ 
b/aether-demo-snippets/src/main/java/org/apache/maven/aether/examples/ResolveTransitiveDependencies.java
@@ -0,0 +1,72 @@
+package org.apache.maven.aether.examples;
+
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ * 
+ *  http://www.apache.org/licenses/LICENSE-2.0
+ * 
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+import java.util.List;
+
+import org.apache.maven.aether.examples.util.Booter;
+import org.eclipse.aether.RepositorySystem;
+import org.eclipse.aether.RepositorySystemSession;
+import org.eclipse.aether.artifact.Artifact;
+import org.eclipse.aether.artifact.DefaultArtifact;
+import org.eclipse.aether.collection.CollectRequest;
+import org.eclipse.aether.graph.Dependency;
+import org.eclipse.aether.graph.DependencyFilter;
+import org.eclipse.aether.resolution.ArtifactResult;
+import org.eclipse.aether.resolution.DependencyRequest;
+import org.eclipse.aether.util.artifact.JavaScopes;
+import org.eclipse.aether.util.filter.DependencyFilterUtils;
+
+/**
+ * Resolves the transitive (compile) dependencies of an artifact.
+ */
+public class ResolveTransitiveDependencies
+{
+
+    public static void main( String[] args )
+        throws Exception
+    {
+        System.out.println( 
"------------------------------------------------------------" );
+        System.out.println( 
ResolveTransitiveDependencies.class.getSimpleName() );
+
+        RepositorySystem system = Booter.newRepositorySystem();
+
+        RepositorySystemSession session = Booter.newRepositorySystemSession( 
system );
+
+        Artifact artifact = new DefaultArtifact( 
"org.eclipse.aether:aether-impl:1.0.0.v20140518" );
+
+        DependencyFilter classpathFlter = 
DependencyFilterUtils.classpathFilter( JavaScopes.COMPILE );
+
+        CollectRequest collectRequest = new CollectRequest();
+        collectRequest.setRoot( new Dependency( artifact, JavaScopes.COMPILE ) 
);
+        collectRequest.setRepositories( Booter.newRepositories( system, 
session ) );
+
+        DependencyRequest dependencyRequest = new DependencyRequest( 
collectRequest, classpathFlter );
+
+        List<ArtifactResult> artifactResults =
+            system.resolveDependencies( session, dependencyRequest 
).getArtifactResults();
+
+        for ( ArtifactResult artifactResult : artifactResults )
+        {
+            System.out.println( artifactResult.getArtifact() + " resolved to " 
+ artifactResult.getArtifact().getFile() );
+        }
+    }
+
+}

http://git-wip-us.apache.org/repos/asf/maven-aether/blob/6283e29e/aether-demo-snippets/src/main/java/org/apache/maven/aether/examples/aether/Aether.java
----------------------------------------------------------------------
diff --git 
a/aether-demo-snippets/src/main/java/org/apache/maven/aether/examples/aether/Aether.java
 
b/aether-demo-snippets/src/main/java/org/apache/maven/aether/examples/aether/Aether.java
new file mode 100644
index 0000000..b9370c1
--- /dev/null
+++ 
b/aether-demo-snippets/src/main/java/org/apache/maven/aether/examples/aether/Aether.java
@@ -0,0 +1,131 @@
+package org.apache.maven.aether.examples.aether;
+
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ * 
+ *  http://www.apache.org/licenses/LICENSE-2.0
+ * 
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+import java.io.ByteArrayOutputStream;
+import java.io.PrintStream;
+
+import org.apache.maven.aether.examples.util.Booter;
+import org.apache.maven.aether.examples.util.ConsoleDependencyGraphDumper;
+import org.eclipse.aether.DefaultRepositorySystemSession;
+import org.eclipse.aether.RepositorySystem;
+import org.eclipse.aether.RepositorySystemSession;
+import org.eclipse.aether.artifact.Artifact;
+import org.eclipse.aether.artifact.DefaultArtifact;
+import org.eclipse.aether.collection.CollectRequest;
+import org.eclipse.aether.deployment.DeployRequest;
+import org.eclipse.aether.deployment.DeploymentException;
+import org.eclipse.aether.graph.Dependency;
+import org.eclipse.aether.graph.DependencyNode;
+import org.eclipse.aether.installation.InstallRequest;
+import org.eclipse.aether.installation.InstallationException;
+import org.eclipse.aether.repository.Authentication;
+import org.eclipse.aether.repository.LocalRepository;
+import org.eclipse.aether.repository.RemoteRepository;
+import org.eclipse.aether.resolution.DependencyRequest;
+import org.eclipse.aether.resolution.DependencyResolutionException;
+import org.eclipse.aether.util.graph.visitor.PreorderNodeListGenerator;
+import org.eclipse.aether.util.repository.AuthenticationBuilder;
+
+/**
+ */
+public class Aether
+{
+    private String remoteRepository;
+
+    private RepositorySystem repositorySystem;
+
+    private LocalRepository localRepository;
+
+    public Aether( String remoteRepository, String localRepository )
+    {
+        this.remoteRepository = remoteRepository;
+        this.repositorySystem = Booter.newRepositorySystem();
+        this.localRepository = new LocalRepository( localRepository );
+    }
+
+    private RepositorySystemSession newSession()
+    {
+        DefaultRepositorySystemSession session = 
Booter.newRepositorySystemSession( repositorySystem );
+        session.setLocalRepositoryManager( 
repositorySystem.newLocalRepositoryManager( session, localRepository ) );
+        return session;
+    }
+
+    public AetherResult resolve( String groupId, String artifactId, String 
version )
+        throws DependencyResolutionException
+    {
+        RepositorySystemSession session = newSession();
+        Dependency dependency =
+            new Dependency( new DefaultArtifact( groupId, artifactId, "", 
"jar", version ), "runtime" );
+        RemoteRepository central = new RemoteRepository.Builder( "central", 
"default", remoteRepository ).build();
+
+        CollectRequest collectRequest = new CollectRequest();
+        collectRequest.setRoot( dependency );
+        collectRequest.addRepository( central );
+
+        DependencyRequest dependencyRequest = new DependencyRequest();
+        dependencyRequest.setCollectRequest( collectRequest );
+
+        DependencyNode rootNode = repositorySystem.resolveDependencies( 
session, dependencyRequest ).getRoot();
+
+        StringBuilder dump = new StringBuilder();
+        displayTree( rootNode, dump );
+
+        PreorderNodeListGenerator nlg = new PreorderNodeListGenerator();
+        rootNode.accept( nlg );
+
+        return new AetherResult( rootNode, nlg.getFiles(), nlg.getClassPath() 
);
+    }
+
+    public void install( Artifact artifact, Artifact pom )
+        throws InstallationException
+    {
+        RepositorySystemSession session = newSession();
+
+        InstallRequest installRequest = new InstallRequest();
+        installRequest.addArtifact( artifact ).addArtifact( pom );
+
+        repositorySystem.install( session, installRequest );
+    }
+
+    public void deploy( Artifact artifact, Artifact pom, String 
remoteRepository )
+        throws DeploymentException
+    {
+        RepositorySystemSession session = newSession();
+
+        Authentication auth = new AuthenticationBuilder().addUsername( "admin" 
).addPassword( "admin123" ).build();
+        RemoteRepository nexus =
+            new RemoteRepository.Builder( "nexus", "default", remoteRepository 
).setAuthentication( auth ).build();
+
+        DeployRequest deployRequest = new DeployRequest();
+        deployRequest.addArtifact( artifact ).addArtifact( pom );
+        deployRequest.setRepository( nexus );
+
+        repositorySystem.deploy( session, deployRequest );
+    }
+
+    private void displayTree( DependencyNode node, StringBuilder sb )
+    {
+        ByteArrayOutputStream os = new ByteArrayOutputStream( 1024 );
+        node.accept( new ConsoleDependencyGraphDumper( new PrintStream( os ) ) 
);
+        sb.append( os.toString() );
+    }
+
+}

http://git-wip-us.apache.org/repos/asf/maven-aether/blob/6283e29e/aether-demo-snippets/src/main/java/org/apache/maven/aether/examples/aether/AetherDemo.java
----------------------------------------------------------------------
diff --git 
a/aether-demo-snippets/src/main/java/org/apache/maven/aether/examples/aether/AetherDemo.java
 
b/aether-demo-snippets/src/main/java/org/apache/maven/aether/examples/aether/AetherDemo.java
new file mode 100644
index 0000000..e0bfac7
--- /dev/null
+++ 
b/aether-demo-snippets/src/main/java/org/apache/maven/aether/examples/aether/AetherDemo.java
@@ -0,0 +1,78 @@
+package org.apache.maven.aether.examples.aether;
+
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ * 
+ *  http://www.apache.org/licenses/LICENSE-2.0
+ * 
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+import java.io.File;
+import java.util.List;
+
+import org.eclipse.aether.artifact.Artifact;
+import org.eclipse.aether.artifact.DefaultArtifact;
+import org.eclipse.aether.deployment.DeploymentException;
+import org.eclipse.aether.graph.DependencyNode;
+import org.eclipse.aether.installation.InstallationException;
+import org.eclipse.aether.resolution.DependencyResolutionException;
+import org.eclipse.aether.util.artifact.SubArtifact;
+
+/**
+ */
+@SuppressWarnings( "unused" )
+public class AetherDemo
+{
+
+    public void resolve() 
+        throws DependencyResolutionException
+    {
+        Aether aether = new Aether( 
"http://localhost:8081/nexus/content/groups/public";, 
"/Users/jvanzyl/aether-repo" );
+                
+        AetherResult result = aether.resolve( "com.mycompany.app", 
"super-app", "1.0" );
+
+        // Get the root of the resolved tree of artifacts
+        //
+        DependencyNode root = result.getRoot();
+
+        // Get the list of files for the artifacts resolved
+        //
+        List<File> artifacts = result.getResolvedFiles();
+        
+        // Get the classpath of the artifacts resolved
+        //
+        String classpath = result.getResolvedClassPath();        
+    }
+    
+    public void installAndDeploy() 
+        throws InstallationException, DeploymentException
+    {
+        Aether aether = new Aether( 
"http://localhost:8081/nexus/content/groups/public";, 
"/Users/jvanzyl/aether-repo" );
+        
+        Artifact artifact = new DefaultArtifact( "com.mycompany.super", 
"super-core", "jar", "0.1-SNAPSHOT" );
+        artifact = artifact.setFile( new File( "jar-from-whatever-process.jar" 
) );
+        Artifact pom = new SubArtifact( artifact, null, "pom" );
+        pom = pom.setFile( new File( "pom-from-whatever-process.xml" ) );
+          
+        // Install into the local repository specified
+        //
+        aether.install( artifact, pom );
+        
+        // Deploy to a remote reposistory
+        //
+        aether.deploy( artifact, pom, 
"http://localhost:8081/nexus/content/repositories/snapshots/"; );
+    }
+
+}

http://git-wip-us.apache.org/repos/asf/maven-aether/blob/6283e29e/aether-demo-snippets/src/main/java/org/apache/maven/aether/examples/aether/AetherResult.java
----------------------------------------------------------------------
diff --git 
a/aether-demo-snippets/src/main/java/org/apache/maven/aether/examples/aether/AetherResult.java
 
b/aether-demo-snippets/src/main/java/org/apache/maven/aether/examples/aether/AetherResult.java
new file mode 100644
index 0000000..be2be4e
--- /dev/null
+++ 
b/aether-demo-snippets/src/main/java/org/apache/maven/aether/examples/aether/AetherResult.java
@@ -0,0 +1,56 @@
+package org.apache.maven.aether.examples.aether;
+
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ * 
+ *  http://www.apache.org/licenses/LICENSE-2.0
+ * 
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+import java.io.File;
+import java.util.List;
+
+import org.eclipse.aether.graph.DependencyNode;
+
+/**
+ */
+public class AetherResult
+{
+    private DependencyNode root;
+    private List<File> resolvedFiles;
+    private String resolvedClassPath;
+    
+    public AetherResult( DependencyNode root, List<File> resolvedFiles, String 
resolvedClassPath )
+    {
+        this.root = root;
+        this.resolvedFiles = resolvedFiles;
+        this.resolvedClassPath = resolvedClassPath;
+    }
+
+    public DependencyNode getRoot()
+    {
+        return root;
+    }
+
+    public List<File> getResolvedFiles()
+    {
+        return resolvedFiles;
+    }
+
+    public String getResolvedClassPath()
+    {
+        return resolvedClassPath;
+    }
+}

http://git-wip-us.apache.org/repos/asf/maven-aether/blob/6283e29e/aether-demo-snippets/src/main/java/org/apache/maven/aether/examples/guice/DemoAetherModule.java
----------------------------------------------------------------------
diff --git 
a/aether-demo-snippets/src/main/java/org/apache/maven/aether/examples/guice/DemoAetherModule.java
 
b/aether-demo-snippets/src/main/java/org/apache/maven/aether/examples/guice/DemoAetherModule.java
new file mode 100644
index 0000000..243b958
--- /dev/null
+++ 
b/aether-demo-snippets/src/main/java/org/apache/maven/aether/examples/guice/DemoAetherModule.java
@@ -0,0 +1,74 @@
+package org.apache.maven.aether.examples.guice;
+
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ * 
+ *  http://www.apache.org/licenses/LICENSE-2.0
+ * 
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+import java.util.Collections;
+import java.util.HashSet;
+import java.util.Set;
+
+import javax.inject.Named;
+import javax.inject.Singleton;
+
+import org.apache.maven.repository.internal.MavenAetherModule;
+import org.eclipse.aether.connector.basic.BasicRepositoryConnectorFactory;
+import org.eclipse.aether.spi.connector.RepositoryConnectorFactory;
+import org.eclipse.aether.spi.connector.transport.TransporterFactory;
+import org.eclipse.aether.transport.file.FileTransporterFactory;
+import org.eclipse.aether.transport.http.HttpTransporterFactory;
+
+import com.google.inject.AbstractModule;
+import com.google.inject.Provides;
+import com.google.inject.name.Names;
+
+class DemoAetherModule
+    extends AbstractModule
+{
+
+    @Override
+    protected void configure()
+    {
+        install( new MavenAetherModule() );
+        // alternatively, use the Guice Multibindings extensions
+        bind( RepositoryConnectorFactory.class ).annotatedWith( Names.named( 
"basic" ) ).to( BasicRepositoryConnectorFactory.class );
+        bind( TransporterFactory.class ).annotatedWith( Names.named( "file" ) 
).to( FileTransporterFactory.class );
+        bind( TransporterFactory.class ).annotatedWith( Names.named( "http" ) 
).to( HttpTransporterFactory.class );
+    }
+
+    @Provides
+    @Singleton
+    Set<RepositoryConnectorFactory> provideRepositoryConnectorFactories( 
@Named( "basic" ) RepositoryConnectorFactory basic )
+    {
+        Set<RepositoryConnectorFactory> factories = new 
HashSet<RepositoryConnectorFactory>();
+        factories.add( basic );
+        return Collections.unmodifiableSet( factories );
+    }
+
+    @Provides
+    @Singleton
+    Set<TransporterFactory> provideTransporterFactories( @Named( "file" ) 
TransporterFactory file,
+                                                         @Named( "http" ) 
TransporterFactory http )
+    {
+        Set<TransporterFactory> factories = new HashSet<TransporterFactory>();
+        factories.add( file );
+        factories.add( http );
+        return Collections.unmodifiableSet( factories );
+    }
+
+}

http://git-wip-us.apache.org/repos/asf/maven-aether/blob/6283e29e/aether-demo-snippets/src/main/java/org/apache/maven/aether/examples/guice/GuiceRepositorySystemFactory.java
----------------------------------------------------------------------
diff --git 
a/aether-demo-snippets/src/main/java/org/apache/maven/aether/examples/guice/GuiceRepositorySystemFactory.java
 
b/aether-demo-snippets/src/main/java/org/apache/maven/aether/examples/guice/GuiceRepositorySystemFactory.java
new file mode 100644
index 0000000..0b531d3
--- /dev/null
+++ 
b/aether-demo-snippets/src/main/java/org/apache/maven/aether/examples/guice/GuiceRepositorySystemFactory.java
@@ -0,0 +1,37 @@
+package org.apache.maven.aether.examples.guice;
+
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ * 
+ *  http://www.apache.org/licenses/LICENSE-2.0
+ * 
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+import org.eclipse.aether.RepositorySystem;
+
+import com.google.inject.Guice;
+
+/**
+ * A factory for repository system instances that employs JSR-330 via Guice to 
wire up the system's components.
+ */
+public class GuiceRepositorySystemFactory
+{
+
+    public static RepositorySystem newRepositorySystem()
+    {
+        return Guice.createInjector( new DemoAetherModule() ).getInstance( 
RepositorySystem.class );
+    }
+
+}

http://git-wip-us.apache.org/repos/asf/maven-aether/blob/6283e29e/aether-demo-snippets/src/main/java/org/apache/maven/aether/examples/manual/ManualRepositorySystemFactory.java
----------------------------------------------------------------------
diff --git 
a/aether-demo-snippets/src/main/java/org/apache/maven/aether/examples/manual/ManualRepositorySystemFactory.java
 
b/aether-demo-snippets/src/main/java/org/apache/maven/aether/examples/manual/ManualRepositorySystemFactory.java
new file mode 100644
index 0000000..df80c4f
--- /dev/null
+++ 
b/aether-demo-snippets/src/main/java/org/apache/maven/aether/examples/manual/ManualRepositorySystemFactory.java
@@ -0,0 +1,62 @@
+package org.apache.maven.aether.examples.manual;
+
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ * 
+ *  http://www.apache.org/licenses/LICENSE-2.0
+ * 
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+import org.apache.maven.repository.internal.MavenRepositorySystemUtils;
+import org.eclipse.aether.RepositorySystem;
+import org.eclipse.aether.connector.basic.BasicRepositoryConnectorFactory;
+import org.eclipse.aether.impl.DefaultServiceLocator;
+import org.eclipse.aether.spi.connector.RepositoryConnectorFactory;
+import org.eclipse.aether.spi.connector.transport.TransporterFactory;
+import org.eclipse.aether.transport.file.FileTransporterFactory;
+import org.eclipse.aether.transport.http.HttpTransporterFactory;
+
+/**
+ * A factory for repository system instances that employs Aether's built-in 
service locator infrastructure to wire up
+ * the system's components.
+ */
+public class ManualRepositorySystemFactory
+{
+
+    public static RepositorySystem newRepositorySystem()
+    {
+        /*
+         * Aether's components implement 
org.eclipse.aether.spi.locator.Service to ease manual wiring and using the
+         * prepopulated DefaultServiceLocator, we only need to register the 
repository connector and transporter
+         * factories.
+         */
+        DefaultServiceLocator locator = 
MavenRepositorySystemUtils.newServiceLocator();
+        locator.addService( RepositoryConnectorFactory.class, 
BasicRepositoryConnectorFactory.class );
+        locator.addService( TransporterFactory.class, 
FileTransporterFactory.class );
+        locator.addService( TransporterFactory.class, 
HttpTransporterFactory.class );
+
+        locator.setErrorHandler( new DefaultServiceLocator.ErrorHandler()
+        {
+            @Override
+            public void serviceCreationFailed( Class<?> type, Class<?> impl, 
Throwable exception )
+            {
+                exception.printStackTrace();
+            }
+        } );
+
+        return locator.getService( RepositorySystem.class );
+    }
+
+}

http://git-wip-us.apache.org/repos/asf/maven-aether/blob/6283e29e/aether-demo-snippets/src/main/java/org/apache/maven/aether/examples/plexus/PlexusRepositorySystemFactory.java
----------------------------------------------------------------------
diff --git 
a/aether-demo-snippets/src/main/java/org/apache/maven/aether/examples/plexus/PlexusRepositorySystemFactory.java
 
b/aether-demo-snippets/src/main/java/org/apache/maven/aether/examples/plexus/PlexusRepositorySystemFactory.java
new file mode 100644
index 0000000..20912a2
--- /dev/null
+++ 
b/aether-demo-snippets/src/main/java/org/apache/maven/aether/examples/plexus/PlexusRepositorySystemFactory.java
@@ -0,0 +1,53 @@
+package org.apache.maven.aether.examples.plexus;
+
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ * 
+ *  http://www.apache.org/licenses/LICENSE-2.0
+ * 
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+import org.codehaus.plexus.ContainerConfiguration;
+import org.codehaus.plexus.DefaultContainerConfiguration;
+import org.codehaus.plexus.DefaultPlexusContainer;
+import org.codehaus.plexus.PlexusConstants;
+import org.eclipse.aether.RepositorySystem;
+
+/**
+ * A factory for repository system instances that employs Plexus to wire up 
the system's components.
+ */
+public class PlexusRepositorySystemFactory
+{
+
+    public static RepositorySystem newRepositorySystem()
+    {
+        /*
+         * Aether's components are equipped with plexus-specific metadata to 
enable discovery and wiring of components
+         * by a Plexus container so this is as easy as looking up the 
implementation.
+         */
+        try
+        {
+            ContainerConfiguration config = new 
DefaultContainerConfiguration();
+            config.setAutoWiring( true );
+            config.setClassPathScanning( PlexusConstants.SCANNING_INDEX );
+            return new DefaultPlexusContainer( config ).lookup( 
RepositorySystem.class );
+        }
+        catch ( Exception e )
+        {
+            throw new IllegalStateException( "dependency injection failed", e 
);
+        }
+    }
+
+}

http://git-wip-us.apache.org/repos/asf/maven-aether/blob/6283e29e/aether-demo-snippets/src/main/java/org/apache/maven/aether/examples/sisu/SisuRepositorySystemFactory.java
----------------------------------------------------------------------
diff --git 
a/aether-demo-snippets/src/main/java/org/apache/maven/aether/examples/sisu/SisuRepositorySystemFactory.java
 
b/aether-demo-snippets/src/main/java/org/apache/maven/aether/examples/sisu/SisuRepositorySystemFactory.java
new file mode 100644
index 0000000..12c04cd
--- /dev/null
+++ 
b/aether-demo-snippets/src/main/java/org/apache/maven/aether/examples/sisu/SisuRepositorySystemFactory.java
@@ -0,0 +1,58 @@
+package org.apache.maven.aether.examples.sisu;
+
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ * 
+ *  http://www.apache.org/licenses/LICENSE-2.0
+ * 
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+import javax.inject.Inject;
+import javax.inject.Named;
+import javax.inject.Provider;
+
+import org.apache.maven.model.building.DefaultModelBuilderFactory;
+import org.apache.maven.model.building.ModelBuilder;
+import org.eclipse.aether.RepositorySystem;
+import org.eclipse.sisu.launch.Main;
+
+/**
+ * A factory for repository system instances that employs Eclipse Sisu to wire 
up the system's components.
+ */
+@Named
+public class SisuRepositorySystemFactory
+{
+
+    @Inject
+    private RepositorySystem repositorySystem;
+
+    public static RepositorySystem newRepositorySystem()
+    {
+        return Main.boot( SisuRepositorySystemFactory.class ).repositorySystem;
+    }
+
+    @Named
+    private static class ModelBuilderProvider
+        implements Provider<ModelBuilder>
+    {
+
+        public ModelBuilder get()
+        {
+            return new DefaultModelBuilderFactory().newInstance();
+        }
+
+    }
+
+}

http://git-wip-us.apache.org/repos/asf/maven-aether/blob/6283e29e/aether-demo-snippets/src/main/java/org/apache/maven/aether/examples/util/Booter.java
----------------------------------------------------------------------
diff --git 
a/aether-demo-snippets/src/main/java/org/apache/maven/aether/examples/util/Booter.java
 
b/aether-demo-snippets/src/main/java/org/apache/maven/aether/examples/util/Booter.java
new file mode 100644
index 0000000..e131646
--- /dev/null
+++ 
b/aether-demo-snippets/src/main/java/org/apache/maven/aether/examples/util/Booter.java
@@ -0,0 +1,73 @@
+package org.apache.maven.aether.examples.util;
+
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ * 
+ *  http://www.apache.org/licenses/LICENSE-2.0
+ * 
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.List;
+
+import org.apache.maven.repository.internal.MavenRepositorySystemUtils;
+import org.eclipse.aether.DefaultRepositorySystemSession;
+import org.eclipse.aether.RepositorySystem;
+import org.eclipse.aether.RepositorySystemSession;
+import org.eclipse.aether.repository.LocalRepository;
+import org.eclipse.aether.repository.RemoteRepository;
+
+/**
+ * A helper to boot the repository system and a repository system session.
+ */
+public class Booter
+{
+
+    public static RepositorySystem newRepositorySystem()
+    {
+        return 
org.apache.maven.aether.examples.manual.ManualRepositorySystemFactory.newRepositorySystem();
+        // return 
org.eclipse.aether.examples.guice.GuiceRepositorySystemFactory.newRepositorySystem();
+        // return 
org.eclipse.aether.examples.sisu.SisuRepositorySystemFactory.newRepositorySystem();
+        // return 
org.eclipse.aether.examples.plexus.PlexusRepositorySystemFactory.newRepositorySystem();
+    }
+
+    public static DefaultRepositorySystemSession newRepositorySystemSession( 
RepositorySystem system )
+    {
+        DefaultRepositorySystemSession session = 
MavenRepositorySystemUtils.newSession();
+
+        LocalRepository localRepo = new LocalRepository( "target/local-repo" );
+        session.setLocalRepositoryManager( system.newLocalRepositoryManager( 
session, localRepo ) );
+
+        session.setTransferListener( new ConsoleTransferListener() );
+        session.setRepositoryListener( new ConsoleRepositoryListener() );
+
+        // uncomment to generate dirty trees
+        // session.setDependencyGraphTransformer( null );
+
+        return session;
+    }
+
+    public static List<RemoteRepository> newRepositories( RepositorySystem 
system, RepositorySystemSession session )
+    {
+        return new ArrayList<RemoteRepository>( Arrays.asList( 
newCentralRepository() ) );
+    }
+
+    private static RemoteRepository newCentralRepository()
+    {
+        return new RemoteRepository.Builder( "central", "default", 
"http://central.maven.org/maven2/"; ).build();
+    }
+
+}

http://git-wip-us.apache.org/repos/asf/maven-aether/blob/6283e29e/aether-demo-snippets/src/main/java/org/apache/maven/aether/examples/util/ConsoleDependencyGraphDumper.java
----------------------------------------------------------------------
diff --git 
a/aether-demo-snippets/src/main/java/org/apache/maven/aether/examples/util/ConsoleDependencyGraphDumper.java
 
b/aether-demo-snippets/src/main/java/org/apache/maven/aether/examples/util/ConsoleDependencyGraphDumper.java
new file mode 100644
index 0000000..21e5c72
--- /dev/null
+++ 
b/aether-demo-snippets/src/main/java/org/apache/maven/aether/examples/util/ConsoleDependencyGraphDumper.java
@@ -0,0 +1,157 @@
+package org.apache.maven.aether.examples.util;
+
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ * 
+ *  http://www.apache.org/licenses/LICENSE-2.0
+ * 
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+import java.io.PrintStream;
+import java.util.ArrayList;
+import java.util.Iterator;
+import java.util.List;
+
+import org.eclipse.aether.artifact.Artifact;
+import org.eclipse.aether.graph.Dependency;
+import org.eclipse.aether.graph.DependencyNode;
+import org.eclipse.aether.graph.DependencyVisitor;
+import org.eclipse.aether.util.artifact.ArtifactIdUtils;
+import org.eclipse.aether.util.graph.manager.DependencyManagerUtils;
+import org.eclipse.aether.util.graph.transformer.ConflictResolver;
+
+/**
+ * A dependency visitor that dumps the graph to the console.
+ */
+public class ConsoleDependencyGraphDumper
+    implements DependencyVisitor
+{
+
+    private PrintStream out;
+
+    private List<ChildInfo> childInfos = new ArrayList<ChildInfo>();
+
+    public ConsoleDependencyGraphDumper()
+    {
+        this( null );
+    }
+
+    public ConsoleDependencyGraphDumper( PrintStream out )
+    {
+        this.out = ( out != null ) ? out : System.out;
+    }
+
+    public boolean visitEnter( DependencyNode node )
+    {
+        out.println( formatIndentation() + formatNode( node ) );
+        childInfos.add( new ChildInfo( node.getChildren().size() ) );
+        return true;
+    }
+
+    private String formatIndentation()
+    {
+        StringBuilder buffer = new StringBuilder( 128 );
+        for ( Iterator<ChildInfo> it = childInfos.iterator(); it.hasNext(); )
+        {
+            buffer.append( it.next().formatIndentation( !it.hasNext() ) );
+        }
+        return buffer.toString();
+    }
+
+    private String formatNode( DependencyNode node )
+    {
+        StringBuilder buffer = new StringBuilder( 128 );
+        Artifact a = node.getArtifact();
+        Dependency d = node.getDependency();
+        buffer.append( a );
+        if ( d != null && d.getScope().length() > 0 )
+        {
+            buffer.append( " [" ).append( d.getScope() );
+            if ( d.isOptional() )
+            {
+                buffer.append( ", optional" );
+            }
+            buffer.append( "]" );
+        }
+        {
+            String premanaged = DependencyManagerUtils.getPremanagedVersion( 
node );
+            if ( premanaged != null && !premanaged.equals( a.getBaseVersion() 
) )
+            {
+                buffer.append( " (version managed from " ).append( premanaged 
).append( ")" );
+            }
+        }
+        {
+            String premanaged = DependencyManagerUtils.getPremanagedScope( 
node );
+            if ( premanaged != null && !premanaged.equals( d.getScope() ) )
+            {
+                buffer.append( " (scope managed from " ).append( premanaged 
).append( ")" );
+            }
+        }
+        DependencyNode winner = (DependencyNode) node.getData().get( 
ConflictResolver.NODE_DATA_WINNER );
+        if ( winner != null && !ArtifactIdUtils.equalsId( a, 
winner.getArtifact() ) )
+        {
+            Artifact w = winner.getArtifact();
+            buffer.append( " (conflicts with " );
+            if ( ArtifactIdUtils.toVersionlessId( a ).equals( 
ArtifactIdUtils.toVersionlessId( w ) ) )
+            {
+                buffer.append( w.getVersion() );
+            }
+            else
+            {
+                buffer.append( w );
+            }
+            buffer.append( ")" );
+        }
+        return buffer.toString();
+    }
+
+    public boolean visitLeave( DependencyNode node )
+    {
+        if ( !childInfos.isEmpty() )
+        {
+            childInfos.remove( childInfos.size() - 1 );
+        }
+        if ( !childInfos.isEmpty() )
+        {
+            childInfos.get( childInfos.size() - 1 ).index++;
+        }
+        return true;
+    }
+
+    private static class ChildInfo
+    {
+
+        final int count;
+
+        int index;
+
+        public ChildInfo( int count )
+        {
+            this.count = count;
+        }
+
+        public String formatIndentation( boolean end )
+        {
+            boolean last = index + 1 >= count;
+            if ( end )
+            {
+                return last ? "\\- " : "+- ";
+            }
+            return last ? "   " : "|  ";
+        }
+
+    }
+
+}

Reply via email to