1 package org.apache.maven.plugin.assembly.mojos;
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22 import org.apache.maven.artifact.Artifact;
23 import org.apache.maven.plugin.AbstractMojo;
24 import org.apache.maven.plugin.MojoExecutionException;
25 import org.apache.maven.plugin.MojoFailureException;
26 import org.apache.maven.plugin.assembly.archive.ArchiveExpansionException;
27 import org.apache.maven.plugin.assembly.utils.AssemblyFileUtils;
28 import org.apache.maven.plugins.annotations.Component;
29 import org.apache.maven.plugins.annotations.Mojo;
30 import org.apache.maven.plugins.annotations.Parameter;
31 import org.apache.maven.plugins.annotations.ResolutionScope;
32 import org.apache.maven.project.MavenProject;
33 import org.codehaus.plexus.archiver.manager.ArchiverManager;
34 import org.codehaus.plexus.archiver.manager.NoSuchArchiverException;
35
36 import java.io.File;
37 import java.util.Iterator;
38 import java.util.LinkedHashSet;
39 import java.util.Set;
40
41
42
43
44
45
46
47 @Mojo( name = "unpack", requiresDependencyResolution = ResolutionScope.TEST, inheritByDefault = false )
48 @Deprecated
49 public class UnpackMojo
50 extends AbstractMojo
51 {
52
53
54
55 @Component
56 private MavenProject project;
57
58
59
60 @Component
61 private ArchiverManager archiverManager;
62
63
64
65
66 @Parameter( defaultValue = "${project.build.directory}/assembly/work", required = true )
67 protected File workDirectory;
68
69
70
71
72
73
74 public void execute()
75 throws MojoExecutionException, MojoFailureException
76 {
77 final Set<Artifact> dependencies = new LinkedHashSet<Artifact>();
78
79 if ( project.getArtifact() != null && project.getArtifact().getFile() != null )
80 {
81 dependencies.add( project.getArtifact() );
82 }
83
84 @SuppressWarnings( "unchecked" )
85 final Set<Artifact> projectArtifacts = project.getArtifacts();
86 if ( projectArtifacts != null )
87 {
88 dependencies.addAll( projectArtifacts );
89 }
90
91 for ( final Iterator<Artifact> j = dependencies.iterator(); j.hasNext(); )
92 {
93 final Artifact artifact = j.next();
94
95 final String name = artifact.getFile().getName();
96
97 final File tempLocation = new File( workDirectory, name.substring( 0, name.lastIndexOf( '.' ) ) );
98 boolean process = false;
99 if ( !tempLocation.exists() )
100 {
101 tempLocation.mkdirs();
102 process = true;
103 }
104 else if ( artifact.getFile().lastModified() > tempLocation.lastModified() )
105 {
106 process = true;
107 }
108
109 if ( process )
110 {
111 final File file = artifact.getFile();
112 try
113 {
114 AssemblyFileUtils.unpack( file, tempLocation, archiverManager );
115 }
116 catch ( final NoSuchArchiverException e )
117 {
118 getLog().info( "Skip unpacking dependency file with unknown extension: " + file.getPath() );
119 }
120 catch ( final ArchiveExpansionException e )
121 {
122 throw new MojoExecutionException( "Error unpacking dependency file: " + file, e );
123 }
124 }
125 }
126 }
127
128 }