1 package org.apache.maven.api.services;
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.api.Service;
23 import org.apache.maven.api.annotations.Experimental;
24 import org.apache.maven.api.annotations.Nonnull;
25
26 import java.nio.file.Path;
27 import java.util.Collection;
28 import java.util.List;
29 import java.util.Optional;
30
31 import org.apache.maven.api.Artifact;
32 import org.apache.maven.api.Node;
33 import org.apache.maven.api.Project;
34 import org.apache.maven.api.RemoteRepository;
35 import org.apache.maven.api.ResolutionScope;
36 import org.apache.maven.api.Session;
37
38
39
40
41
42
43 @Experimental
44 public interface ProjectManager extends Service
45 {
46
47
48
49
50
51
52 @Nonnull
53 Optional<Path> getPath( Project project );
54
55 @Nonnull
56 Collection<Artifact> getAttachedArtifacts( Project project );
57
58 default void attachArtifact( Session session, Project project, Path path )
59 {
60 String name = path.getFileName().toString();
61 int dot = name.lastIndexOf( '.' );
62 String ext = dot >= 1 ? name.substring( dot + 1 ) : "";
63 Artifact artifact = session.createArtifact( project.getGroupId(), project.getArtifactId(),
64 project.getVersion(), ext );
65 attachArtifact( project, artifact, path );
66 }
67
68 default void attachArtifact( Session session, Project project, String type, Path path )
69 {
70 Artifact artifact = session.createArtifact( project.getGroupId(), project.getArtifactId(),
71 project.getVersion(), null, null, type );
72 attachArtifact( project, artifact, path );
73 }
74
75 void attachArtifact( Project project, Artifact artifact, Path path );
76
77 List<String> getCompileSourceRoots( Project project );
78
79 void addCompileSourceRoot( Project project, String sourceRoot );
80
81 List<String> getTestCompileSourceRoots( Project project );
82
83 void addTestCompileSourceRoot( Project project, String sourceRoot );
84
85 List<RemoteRepository> getRepositories( Project project );
86
87 List<Artifact> getResolvedDependencies( Project project, ResolutionScope scope );
88
89 Node getCollectedDependencies( Project project, ResolutionScope scope );
90
91 void setProperty( Project project, String key, String value );
92
93 }