<?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="lifecycle-white-list">
            <api name="general"/>
            <summary>LifecycleParticipants can be ignored</summary>
            <version major="2" minor="156"/>
            <date day="9" month="9" year="2022"/>
            <author login="sdedic"/>
            <compatibility addition="yes" semantic="compatible"/>
            <description>
                NetBeans warns if a project / plugin provides AbstractLifecycleParticipants that
                can reconfigure the project after load. Now some harmless ones can be whitelisted
                so they do not produce warning / project problem. See <a href="@TOP@/architecture-summary.html#layer-LifecycleParticipants">LifecycleParticipants</a>.
            </description>
        </change>
        <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>
