View Javadoc
1   /*
2    * Licensed to the Apache Software Foundation (ASF) under one
3    * or more contributor license agreements.  See the NOTICE file
4    * distributed with this work for additional information
5    * regarding copyright ownership.  The ASF licenses this file
6    * to you under the Apache License, Version 2.0 (the
7    * "License"); you may not use this file except in compliance
8    * with the License.  You may obtain a copy of the License at
9    *
10   *   http://www.apache.org/licenses/LICENSE-2.0
11   *
12   * Unless required by applicable law or agreed to in writing,
13   * software distributed under the License is distributed on an
14   * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
15   * KIND, either express or implied.  See the License for the
16   * specific language governing permissions and limitations
17   * under the License.
18   */
19  package org.apache.maven.api.services;
20  
21  import java.util.List;
22  
23  import org.apache.maven.api.annotations.Experimental;
24  import org.apache.maven.api.annotations.Nonnull;
25  import org.apache.maven.api.model.Model;
26  import org.apache.maven.api.model.Profile;
27  
28  /**
29   * Result of a project build call.
30   *
31   * @since 4.0.0
32   */
33  @Experimental
34  public interface ModelBuilderResult {
35  
36      /**
37       * Gets the source from which the model was read.
38       *
39       * @return The source from which the model was read, never {@code null}.
40       */
41      @Nonnull
42      ModelSource getSource();
43  
44      /**
45       * Gets the file model.
46       *
47       * @return the file model, never {@code null}.
48       */
49      @Nonnull
50      Model getFileModel();
51  
52      /**
53       * Gets the file model + build pom transformation, without inheritance nor interpolation.
54       *
55       * @return The raw model, never {@code null}.
56       */
57      @Nonnull
58      Model getRawModel();
59  
60      /**
61       * Gets the effective model of the parent POM.
62       *
63       * @return the effective model of the parent POM, never {@code null}
64       */
65      @Nonnull
66      Model getParentModel();
67  
68      /**
69       * Gets the assembled model with inheritance, interpolation and profile injection.
70       *
71       * @return The assembled model, never {@code null}.
72       */
73      @Nonnull
74      Model getEffectiveModel();
75  
76      /**
77       * Gets the profiles that were active during model building.
78       *
79       * @return The active profiles of the model or an empty list if the model has no active profiles.
80       */
81      @Nonnull
82      List<Profile> getActivePomProfiles();
83  
84      /**
85       * Gets the external profiles that were active during model building. External profiles are those that were
86       * contributed by {@link ModelBuilderRequest#getProfiles()}.
87       *
88       * @return The active external profiles or an empty list if none, never {@code null}.
89       */
90      @Nonnull
91      List<Profile> getActiveExternalProfiles();
92  
93      /**
94       * Gets the problems that were encountered during the project building.
95       *
96       * @return the problems that were encountered during the project building, can be empty but never {@code null}
97       */
98      @Nonnull
99      List<ModelProblem> getProblems();
100 
101     /**
102      * Gets the children of this result.
103      *
104      * @return the children of this result, can be empty but never {@code null}
105      */
106     @Nonnull
107     List<? extends ModelBuilderResult> getChildren();
108 
109     /**
110      * Creates a human-readable representation of these errors.
111      */
112     String toString();
113 }