1 package com.aurea.maven.plugins.util;
2
3 import java.util.HashSet;
4 import java.util.Set;
5
6 import org.apache.maven.AbstractMavenLifecycleParticipant;
7 import org.apache.maven.artifact.Artifact;
8 import org.apache.maven.artifact.handler.ArtifactHandler;
9 import org.apache.maven.artifact.handler.manager.ArtifactHandlerManager;
10 import org.apache.maven.execution.MavenSession;
11 import org.apache.maven.project.MavenProject;
12 import org.codehaus.plexus.component.annotations.Component;
13 import org.codehaus.plexus.component.annotations.Requirement;
14 import org.codehaus.plexus.logging.Logger;
15
16 @Component(role = AbstractMavenLifecycleParticipant.class, hint = "ArtifactHandlerExt")
17 public class ArtifactHandlerExtension extends AbstractMavenLifecycleParticipant {
18
19
20
21
22
23
24
25
26 private ArtifactHandlerManager artifactHandlerManager;
27
28 @Requirement
29 private Logger logger;
30
31
32
33
34 public void afterProjectsRead(MavenSession session) {
35 logger.info(" __ __");
36 logger.info("| \\/ |__ _Aurea-__ ___");
37 logger.info("| |\\/| / _` \\ V / -_) ' \\ ~ Artifact Loader Extension ~ 1.0");
38 logger.info("|_| |_\\__,_|\\_/\\___|_||_| ");
39 logger.info("");
40
41 MavenProject project = session.getProjects().get(0);
42
43 logger.info(
44 "Setting ArtifactHandler on project-artifact: "
45 + project.getId() + "...");
46
47 Set<Artifact> artifacts = new HashSet<Artifact>();
48 artifacts.add(project.getArtifact());
49
50 Set<Artifact> dependencyArtifacts = project.getDependencyArtifacts();
51 if (dependencyArtifacts != null && !dependencyArtifacts.isEmpty()) {
52 artifacts.addAll(dependencyArtifacts);
53 }
54
55 for (Artifact artifact : artifacts) {
56 String type = artifact.getType();
57 ArtifactHandler handler = artifactHandlerManager
58 .getArtifactHandler(type);
59
60 logger.debug("Artifact: " + artifact.getId() + "\nType: " + type
61 + "\nArtifactHandler extension: " + handler.getExtension());
62
63 artifact.setArtifactHandler(handler);
64 }
65
66 logger.info("...done.");
67 }
68
69 }