This is an automated email from the ASF dual-hosted git repository.
gnodet pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/maven.git
The following commit(s) were added to refs/heads/master by this push:
new b4e78d7c43 [MNG-7985] Provide project access to modified resources /
test-resources and to the executionProject (#1356)
b4e78d7c43 is described below
commit b4e78d7c4362e4eb142754d9a59d6b5973f23af1
Author: Guillaume Nodet <[email protected]>
AuthorDate: Thu Dec 21 06:31:27 2023 +0100
[MNG-7985] Provide project access to modified resources / test-resources
and to the executionProject (#1356)
---
.../apache/maven/api/services/ProjectManager.java | 12 +++++++++
.../maven/internal/impl/DefaultProjectManager.java | 30 ++++++++++++++++++++++
2 files changed, 42 insertions(+)
diff --git
a/api/maven-api-core/src/main/java/org/apache/maven/api/services/ProjectManager.java
b/api/maven-api-core/src/main/java/org/apache/maven/api/services/ProjectManager.java
index f887ac82d7..e31818a602 100644
---
a/api/maven-api-core/src/main/java/org/apache/maven/api/services/ProjectManager.java
+++
b/api/maven-api-core/src/main/java/org/apache/maven/api/services/ProjectManager.java
@@ -30,6 +30,7 @@ import org.apache.maven.api.Service;
import org.apache.maven.api.Session;
import org.apache.maven.api.annotations.Experimental;
import org.apache.maven.api.annotations.Nonnull;
+import org.apache.maven.api.model.Resource;
/**
* Interface to manage the project during its lifecycle.
@@ -75,7 +76,18 @@ public interface ProjectManager extends Service {
void addTestCompileSourceRoot(Project project, String sourceRoot);
+ List<Resource> getResources(Project project);
+
+ void addResource(Project project, Resource resource);
+
+ List<Resource> getTestResources(Project project);
+
+ void addTestResource(Project project, Resource resource);
+
List<RemoteRepository> getRepositories(Project project);
void setProperty(Project project, String key, String value);
+
+ @Nonnull
+ Optional<Project> getExecutionProject(@Nonnull Project project);
}
diff --git
a/maven-core/src/main/java/org/apache/maven/internal/impl/DefaultProjectManager.java
b/maven-core/src/main/java/org/apache/maven/internal/impl/DefaultProjectManager.java
index 1570c4a81b..3613313933 100644
---
a/maven-core/src/main/java/org/apache/maven/internal/impl/DefaultProjectManager.java
+++
b/maven-core/src/main/java/org/apache/maven/internal/impl/DefaultProjectManager.java
@@ -32,6 +32,7 @@ import org.apache.maven.RepositoryUtils;
import org.apache.maven.api.*;
import org.apache.maven.api.annotations.Nonnull;
import org.apache.maven.api.di.SessionScoped;
+import org.apache.maven.api.model.Resource;
import org.apache.maven.api.services.*;
import org.apache.maven.project.MavenProject;
import org.codehaus.plexus.PlexusContainer;
@@ -103,6 +104,26 @@ public class DefaultProjectManager implements
ProjectManager {
roots.add(sourceRoot);
}
+ @Override
+ public List<Resource> getResources(Project project) {
+ return
getMavenProject(project).getBuild().getDelegate().getResources();
+ }
+
+ @Override
+ public void addResource(Project project, Resource resource) {
+ getMavenProject(project).addResource(new
org.apache.maven.model.Resource(resource));
+ }
+
+ @Override
+ public List<Resource> getTestResources(Project project) {
+ return
getMavenProject(project).getBuild().getDelegate().getTestResources();
+ }
+
+ @Override
+ public void addTestResource(Project project, Resource resource) {
+ getMavenProject(project).addTestResource(new
org.apache.maven.model.Resource(resource));
+ }
+
@Override
public List<RemoteRepository> getRepositories(Project project) {
return ((DefaultProject) project)
@@ -116,6 +137,15 @@ public class DefaultProjectManager implements
ProjectManager {
getMavenProject(project).getProperties().setProperty(key, value);
}
+ @Override
+ public Optional<Project> getExecutionProject(Project project) {
+ // Session keep tracks of the Project per project id,
+ // so we cannot use session.getProject(p) for forked projects
+ // which are temporary clones
+ return
Optional.ofNullable(getMavenProject(project).getExecutionProject())
+ .map(p -> new DefaultProject(session, p));
+ }
+
private MavenProject getMavenProject(Project project) {
return ((DefaultProject) project).getProject();
}