1 package org.apache.maven.api;
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22 import java.nio.file.Path;
23 import java.util.List;
24 import java.util.Optional;
25
26 import org.apache.maven.api.annotations.Experimental;
27 import org.apache.maven.api.annotations.Nonnull;
28 import org.apache.maven.api.model.Build;
29 import org.apache.maven.api.model.Model;
30
31
32
33
34
35
36
37 @Experimental
38 public interface Project
39 {
40
41 @Nonnull
42 String getGroupId();
43
44 @Nonnull
45 String getArtifactId();
46
47 @Nonnull
48 String getVersion();
49
50 @Nonnull
51 String getPackaging();
52
53 @Nonnull
54 Artifact getArtifact();
55
56 @Nonnull
57 Model getModel();
58
59 @Nonnull
60 default Build getBuild()
61 {
62 Build build = getModel().getBuild();
63 return build != null ? build : Build.newInstance();
64 }
65
66
67
68
69
70
71
72
73 @Nonnull
74 Optional<Path> getPomPath();
75
76 @Nonnull
77 default Optional<Path> getBasedir()
78 {
79 return getPomPath().map( Path::getParent );
80 }
81
82 @Nonnull
83 List<DependencyCoordinate> getDependencies();
84
85 @Nonnull
86 List<DependencyCoordinate> getManagedDependencies();
87
88 @Nonnull
89 default String getId()
90 {
91 return getModel().getId();
92 }
93
94 boolean isExecutionRoot();
95
96 @Nonnull
97 Optional<Project> getParent();
98
99 @Nonnull
100 List<RemoteRepository> getRemoteProjectRepositories();
101
102 @Nonnull
103 List<RemoteRepository> getRemotePluginRepositories();
104
105 }