1 package org.apache.maven.model.path;
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22 import java.io.File;
23 import java.util.ArrayList;
24 import java.util.List;
25
26 import org.apache.maven.model.Build;
27 import org.apache.maven.model.Model;
28 import org.apache.maven.model.Reporting;
29 import org.apache.maven.model.Resource;
30 import org.apache.maven.model.building.ModelBuildingRequest;
31 import org.codehaus.plexus.component.annotations.Component;
32 import org.codehaus.plexus.component.annotations.Requirement;
33
34
35
36
37
38
39 @Component( role = ModelPathTranslator.class )
40 public class DefaultModelPathTranslator
41 implements ModelPathTranslator
42 {
43
44 @Requirement
45 private PathTranslator pathTranslator;
46
47 public DefaultModelPathTranslator setPathTranslator( PathTranslator pathTranslator )
48 {
49 this.pathTranslator = pathTranslator;
50 return this;
51 }
52
53 @Override
54 public void alignToBaseDirectory( Model model, File basedir, ModelBuildingRequest request )
55 {
56 if ( model == null || basedir == null )
57 {
58 return;
59 }
60
61 Build build = model.getBuild();
62
63 if ( build != null )
64 {
65 build.setDirectory( alignToBaseDirectory( build.getDirectory(), basedir ) );
66
67 build.setSourceDirectory( alignToBaseDirectory( build.getSourceDirectory(), basedir ) );
68
69 build.setTestSourceDirectory( alignToBaseDirectory( build.getTestSourceDirectory(), basedir ) );
70
71 build.setScriptSourceDirectory( alignToBaseDirectory( build.getScriptSourceDirectory(), basedir ) );
72
73 for ( Resource resource : build.getResources() )
74 {
75 resource.setDirectory( alignToBaseDirectory( resource.getDirectory(), basedir ) );
76 }
77
78 for ( Resource resource : build.getTestResources() )
79 {
80 resource.setDirectory( alignToBaseDirectory( resource.getDirectory(), basedir ) );
81 }
82
83 if ( build.getFilters() != null )
84 {
85 List<String> filters = new ArrayList<String>( build.getFilters().size() );
86 for ( String filter : build.getFilters() )
87 {
88 filters.add( alignToBaseDirectory( filter, basedir ) );
89 }
90 build.setFilters( filters );
91 }
92
93 build.setOutputDirectory( alignToBaseDirectory( build.getOutputDirectory(), basedir ) );
94
95 build.setTestOutputDirectory( alignToBaseDirectory( build.getTestOutputDirectory(), basedir ) );
96 }
97
98 Reporting reporting = model.getReporting();
99
100 if ( reporting != null )
101 {
102 reporting.setOutputDirectory( alignToBaseDirectory( reporting.getOutputDirectory(), basedir ) );
103 }
104 }
105
106 private String alignToBaseDirectory( String path, File basedir )
107 {
108 return pathTranslator.alignToBaseDirectory( path, basedir );
109 }
110
111 }