michael-o commented on code in PR #1387:
URL: https://github.com/apache/maven/pull/1387#discussion_r1459429883


##########
api/maven-api-core/src/main/java/org/apache/maven/api/Project.java:
##########
@@ -37,24 +37,103 @@
 @Experimental
 public interface Project {
 
+    /**
+     * Returns the project groupId.
+     */
     @Nonnull
     String getGroupId();
 
+    /**
+     * Returns the project artifactId.
+     */
     @Nonnull
     String getArtifactId();
 
+    /**
+     * Returns the project version.
+     */
     @Nonnull
     String getVersion();
 
+    /**
+     * Returns the project packaging.
+     * <p>
+     * Note: unlike in legacy code, logical checks against string representing 
packaging (returned by this method)
+     * are NOT recommended (code like {@code 
"pom".equals(project.getPackaging)} must be avoided). Use method
+     * {@link #getArtifacts()} to gain access to POM or build artifact.
+     *
+     * @see #getArtifacts()
+     */
     @Nonnull
     String getPackaging();
 
+    /**
+     * Returns the project POM artifact, that is the artifact of the POM of 
this project. Every project have POM
+     * artifact, while the existence of backing POM file is NOT a requirement 
(i.e. for some transient projects).
+     *
+     * @see org.apache.maven.api.services.ArtifactManager#getPath(Artifact)
+     */
+    @Nonnull
+    default Artifact getPomArtifact() {
+        return getArtifacts().get(0);
+    }
+
+    /**
+     * Returns the project artifact, that is the artifact produced by this 
project build. This artifact MAY be same
+     * as the one returned by {@link #getPomArtifact()}, if the project is 
actually not producing any main artifact.
+     * The existence of artifact backing file depends on which lifecycle step 
this method was invoked, as the file
+     * may not yet be built.
+     * <p>
+     * If only non-POM artifacts are needed, better use {@link 
#getArtifacts()} method: if that method returns list
+     * having one element, the methods {@link #getPomArtifact()} and this one 
will return same artifact. For non-POM
+     * artifacts one would filter for results having two elements, and would 
consume second element of the list.
+     *
+     * @see #getArtifacts()
+     * @see org.apache.maven.api.services.ArtifactManager#getPath(Artifact)
+     */
+    @Nonnull
+    default Artifact getArtifact() {
+        List<Artifact> artifacts = getArtifacts();
+        return artifacts.get(artifacts.size() - 1);
+    }
+
+    /**
+     * Returns the project artifacts which are the project POM artifact and 
the artifact produced by this project build.
+     * The list may have one or two elements (never less than 1, never more 
than 2), depending on project packaging.
+     * <p>
+     * The list's first element is ALWAYS the project POM artifact. Presence 
of second element in the list depends
+     * solely on this project packaging.

Review Comment:
   on the



-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: issues-unsubscr...@maven.apache.org

For queries about this service, please contact Infrastructure at:
us...@infra.apache.org

Reply via email to