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 ? " " : "| "; + } + + } + +}