001 package org.apache.maven.model.building;
002
003 /*
004 * Licensed to the Apache Software Foundation (ASF) under one
005 * or more contributor license agreements. See the NOTICE file
006 * distributed with this work for additional information
007 * regarding copyright ownership. The ASF licenses this file
008 * to you under the Apache License, Version 2.0 (the
009 * "License"); you may not use this file except in compliance
010 * with the License. You may obtain a copy of the License at
011 *
012 * http://www.apache.org/licenses/LICENSE-2.0
013 *
014 * Unless required by applicable law or agreed to in writing,
015 * software distributed under the License is distributed on an
016 * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
017 * KIND, either express or implied. See the License for the
018 * specific language governing permissions and limitations
019 * under the License.
020 */
021
022 /**
023 * Builds the effective model from a POM.
024 *
025 * @author Benjamin Bentmann
026 */
027 public interface ModelBuilder
028 {
029
030 /**
031 * Builds the effective model of the specified POM.
032 *
033 * @param request The model building request that holds the parameters, must not be {@code null}.
034 * @return The result of the model building, never {@code null}.
035 * @throws ModelBuildingException If the effective model could not be built.
036 */
037 ModelBuildingResult build( ModelBuildingRequest request )
038 throws ModelBuildingException;
039
040 /**
041 * Builds the effective model by completing the specified interim result which was produced by a previous call to
042 * {@link #build(ModelBuildingRequest)} with {@link ModelBuildingRequest#isTwoPhaseBuilding()} being {@code true}.
043 * The model building request passed to this method must be the same as the one used for the first phase of the
044 * model building.
045 *
046 * @param request The model building request that holds the parameters, must not be {@code null}.
047 * @param result The interim result of the first phase of model building, must not be {@code null}.
048 * @return The result of the model building, never {@code null}.
049 * @throws ModelBuildingException If the effective model could not be built.
050 */
051 ModelBuildingResult build( ModelBuildingRequest request, ModelBuildingResult result )
052 throws ModelBuildingException;
053
054 }