<?xml version="1.0" encoding="UTF-8"?>
<!--

    Licensed to the Apache Software Foundation (ASF) under one
    or more contributor license agreements.  See the NOTICE file
    distributed with this work for additional information
    regarding copyright ownership.  The ASF licenses this file
    to you under the Apache License, Version 2.0 (the
    "License"); you may not use this file except in compliance
    with the License.  You may obtain a copy of the License at

      http://www.apache.org/licenses/LICENSE-2.0

    Unless required by applicable law or agreed to in writing,
    software distributed under the License is distributed on an
    "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
    KIND, either express or implied.  See the License for the
    specific language governing permissions and limitations
    under the License.

-->
<?xml-stylesheet type="text/xml" href="../../nbbuild/javadoctools/apichanges.xsl"?>
<!DOCTYPE apichanges PUBLIC "-//NetBeans//DTD API changes list 1.0//EN" "../../nbbuild/javadoctools/apichanges.dtd">

<!--

INFO FOR PEOPLE ADDING CHANGES:

Check the DTD (apichanges.dtd) for details on the syntax. You do not
need to regenerate the HTML, as this is part of Javadoc generation; just
change the XML. Rough syntax of a change (several parts optional):

<change>
    <api name="compiler"/>
    <summary>Some brief description here, can use <b>XHTML</b></summary>
    <version major="1" minor="99"/>
    <date day="13" month="6" year="2001"/>
    <author login="jrhacker"/>
    <compatibility addition="yes"/>
    <description>
        The main description of the change here.
        Again can use full <b>XHTML</b> as needed.
    </description>
    <class package="org.openide.compiler" name="DoWhatIWantCompiler"/>
    <issue number="14309"/>
</change>

Also permitted elements: <package>, <branch>. <version> is API spec
version, recommended for all new changes. <compatibility> should say
if things were added/modified/deprecated/etc. and give all information
related to upgrading old code. List affected top-level classes and
link to issue numbers if applicable. See the DTD for more details.

Changes need not be in any particular order, they are sorted in various
ways by the stylesheet anyway.

Dates are assumed to mean "on the trunk". If you *also* make the same
change on a stabilization branch, use the <branch> tag to indicate this
and explain why the change was made on a branch in the <description>.

Please only change this file on the trunk! Rather: you can change it
on branches if you want, but these changes will be ignored; only the
trunk version of this file is important.

Deprecations do not count as incompatible, assuming that code using the
deprecated calls continues to see their documented behavior. But do
specify deprecation="yes" in <compatibility>.

This file is not a replacement for Javadoc: it is intended to list changes,
not describe the complete current behavior, for which ordinary documentation
is the proper place.

-->

<apichanges>

    <!-- First, a list of API names you may use: -->
    <apidefs>
        <apidef name="general">Maven Project API</apidef>
        <!-- etc. -->
    </apidefs>

    <!-- ACTUAL CHANGES BEGIN HERE: -->

    <changes>
        <change id="evaluated-project">
            <api name="general"/>
            <summary>Project model can be customized for specific action or usage</summary>
            <version major="2" minor="155"/>
            <date day="10" month="8" year="2022"/>
            <author login="sdedic"/>
            <compatibility addition="yes" semantic="compatible"/>
            <description>
                Project state can be inspected with respect to an intended action to be run or used, and possible
                customized properties or profiles. This allows clients to more precisely follow customizations in 
                the project file and/or action mapping that would be applied when actually using project actions.
            </description>
            <class package="org.netbeans.modules.maven.api" name="NbMavenProject"/>
        </change>
        <change id="plugin.conf.paths">
            <api name="general"/>
            <summary>Added helper method to get artifact paths from build plugin configurations.</summary>
            <version major="2" minor="151"/>
            <date day="24" month="9" year="2021"/>
            <author login="sdedic"/>
            <compatibility addition="yes" semantic="compatible"/>
            <description>
                In addition to String property values, or String lists, artifact-based paths, that are convertible to
                files, are sometimes present in plugin configuration. The new helper function 
                <a href="@TOP@/org/netbeans/modules/maven/api/PluginPropertyUtils.html#getPluginPathProperty-org.netbeans.api.project.Project-org.netbeans.modules.maven.api.PluginPropertyUtils.PluginConfigPathParams-boolean-java.util.List-">getPluginPathProperty</a>
                resolves a list of artifacts from the POM configuration and reports errors encountered.
            </description>
        </change>
        <change id="disable-actions">
            <api name="general"/>
            <summary>Plugin-dependent Lookup</summary>
            <version major="2" minor="149"/>
            <date day="24" month="6" year="2021"/>
            <author login="sdedic"/>
            <compatibility addition="yes" semantic="compatible"/>
            <description>
                <p>
                    Actions can be <b>disabled</b> by the MavenActionsProvider for a configuration.
                </p>
            </description>
            <class name="ActionToGoalUtils" package="org.netbeans.modules.maven.execute"/>
        </change>
        <change id="plugin-lookup">
            <api name="general"/>
            <summary>Plugin-dependent Lookup</summary>
            <version major="2" minor="148"/>
            <date day="15" month="5" year="2021"/>
            <author login="sdedic"/>
            <compatibility addition="yes" semantic="compatible"/>
            <description>
                <p>
                    Register services for a specific <i>maven plugin</i>
                    used in the project. See <a href="@TOP@/architecture-summary.html#layer-PluginLookup">PluginLookup</a>.
                </p>
            </description>
        </change>
        <change id="disable-maven-repo-indexing">
            <api name="general"/>
            <summary>Default for frequency of indexing</summary>
            <version major="2" minor="147"/>
            <date day="1" month="4" year="2021"/>
            <author login="jtulach"/>
            <compatibility semantic="compatible"/>
            <description>
                <p>
                    Introducing <a href="@TOP@architecture-summary.html#group-branding">branding APIs</a>
                    specify default frequency for downloading Maven index.
                </p>
            </description>
        </change>
        <change id="ProjectLookup.fallback">
            <api name="general"/>
            <summary>Allow project services, that are ordered <b>after</b> specific packaging type</summary>
            <version major="2" minor="144"/>
            <date day="10" month="2" year="2021"/>
            <author login="sdedic"/>
            <compatibility addition="yes" binary="compatible" semantic="compatible"/>
            <description>
                <p>
                    Project lookup consists of base services, plus services for the project's packaging type. This change allows for
                    generic post-processing after packaging-specific service. See <a href="@TOP@/architecture-summary.html#layer-MavenPackagingLookup">MavenPackagingLookup</a>
                    for more details.
                </p>
            </description>
        </change>
        <change id="RunConfig.getActionLookup">
            <api name="general"/>
            <summary>RunConfig provides access to action lookup for parameters extensibility</summary>
            <version major="2" minor="144"/>
            <date day="10" month="2" year="2021"/>
            <author login="sdedic"/>
            <compatibility addition="yes" source="incompatible" binary="compatible" semantic="compatible"/>
            <description>
                <p>
                    RunConfig now serves the originating action's context Lookup from <a href="@TOP@/org/netbeans/modules/maven/api/execute/RunConfig.html#getActionContext--">RunConfig.getActionContext()</a>
                    so that the caller can pass extended one-time configuration for the action.
                </p>
            </description>
            <class package="org.netbeans.modules.maven.api.execute" name="RunConfig"/>
        </change>
        <change id="execution.explicitParameters">
            <api name="general"/>
            <summary>Allow to extend or override parameters for user execution from action caller</summary>
            <version major="2" minor="144"/>
            <date day="10" month="2" year="2021"/>
            <author login="sdedic"/>
            <compatibility semantic="compatible"/>
            <description>
                Added support for <a href="@org-netbeans-modules-extexecution-base@/org/netbeans/api/extexecution/base/ExplicitProcessParameters.html">ExplicitProcessParameters</a>
                for Maven-nature projects. The <code>ExternaProcessParameterss</code> instructions now append to or replace VM argsuments or 
                user program arguments. See <a href="@TOP@/org/netbeans/modules/maven/execute/MavenCommandLineExecutor.html">MavenCommandLineExecutor</a>
                for more details.
            </description>
        </change>
        <change id="reusetabs-cos">
           <api name="general"/>
           <summary>Default for reusing tabs and compile on save</summary>
           <version major="2" minor="141"/>
           <date day="12" month="10" year="2020"/>
           <author login="jtulach"/>
           <compatibility semantic="compatible"/>
           <description>
               <p>
                   Introducing <a href="@TOP@architecture-summary.html#group-branding">branding APIs</a>
                   to configure default value for <b>reusing tabs</b> and also for
                   <b>compile on save behavior</b> in Maven projects.
               </p>
           </description>
        </change>
        <change id="jpda-attach-trigger">
           <api name="general"/>
           <summary>Attach to Debugger on triggers</summary>
           <version major="2" minor="127"/>
           <date day="8" month="12" year="2017"/>
           <author login="monacotoni"/>
           <compatibility modification="yes" semantic="compatible"/>
           <description>
               <p>
                   New property to allow  to attach debugger while goal execution is in progress:
                   <code>ACTION_PROPERTY_JPDAATTACH_TRIGGER</code>. Read more about 
    usage of this property in 
    the <a href="@TOP@architecture-summary.html#property-jpda.attach.trigger">nbactions.xml file</a>.
               </p>
           </description>
           <class package="org.netbeans.modules.maven.api" name="Constants"/>
        </change>
        <change id="jpda-attach">
           <api name="general"/>
           <summary>Attach to Debugger after Goal Execution</summary>
           <version major="2" minor="113"/>
           <date day="10" month="3" year="2015"/>
           <author login="jtulach"/>
           <compatibility modification="yes" semantic="compatible"/>
           <description>
               <p>
                   New properties to allow one to attach debugger after
                   a goal is executed: 
    <code>ACTION_PROPERTY_JPDAATTACH</code>,
    <code>ACTION_PROPERTY_JPDAATTACH_ADDRESS</code>,
    <code>ACTION_PROPERTY_JPDAATTACH_PORT</code>. Read more about 
    usage of these properties in 
    the <a href="@TOP@architecture-summary.html#property-jpda.attach">nbactions.xml file</a>.
               </p>
           </description>
           <class package="org.netbeans.modules.maven.api" name="Constants"/>
           <issue number="229192"/>
        </change>
        
        <change id="nbactions-profiles">
           <api name="general"/>
           <summary>nbactions.xml supports profiles section</summary>
           <version major="2" minor="107"/>
           <date day="15" month="7" year="2014"/>
           <author login="jtulach"/>
           <compatibility modification="yes" semantic="compatible"/>
           <description>
               <p>
                   Format of <code>nbactions.xml</code> file has been
                   extended to support <a href="@TOP@architecture-summary.html#java.io.File-nbactions.xml">
                       profiles section</a>.
               </p>
           </description>
           <!--
           <class package="org.netbeans.spi.project.ui" name="LogicalViewProvider"/>
           -->
           <issue number="229192"/>
        </change>

    
        
    </changes>

    <!-- Now the surrounding HTML text and document structure: -->

    <htmlcontents>
<!--

                            NO NO NO NO NO!

         ==============>    DO NOT EDIT ME!  <==============

          AUTOMATICALLY GENERATED FROM APICHANGES.XML, DO NOT EDIT

                SEE projects/projectuiapi/apichanges.xml

        -->
        <head>
            <title>Change History for the Maven Project API</title>
            <link rel="stylesheet" href="prose.css" type="text/css"/>
        </head>
        <body>

            <p class="overviewlink">
                <a href="overview-summary.html">Overview</a>
            </p>

            <h1>Introduction</h1>

            <p>This document lists changes made to the <a href="@org-netbeans-modules-maven@/index.html">Maven Project API</a>.</p>

            <!-- The actual lists of changes, as summaries and details: -->
            <hr/>
            <standard-changelists module-code-name="org.netbeans.modules.maven/1"/>

            <hr/>
            <p>@FOOTER@</p>

        </body>
    </htmlcontents>

</apichanges>
