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