<?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="gradle.java.api">Gradle Java Project API</apidef>
        <!-- etc. -->
    </apidefs>

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

    <changes>
        <change id="action-for-running-tests-in-parallel">
            <api name="gradle.java.api"/>
            <summary>Added action for running tests in parallel</summary>
            <version major="1" minor="30"/>
            <date day="18" month="12" year="2024"/>
            <author login="petrovic-d"/>
            <compatibility semantic="compatible" addition="yes" deprecation="yes"/>
            <description>
                Added action for running tests in parallel with ability to specify the projects on which
                the action will be applied.
            </description>
        </change>
        <change id="sourceset-compiler-javahome">
            <api name="gradle.java.api"/>
            <summary>Support for per-language output directories</summary>
            <version major="1" minor="26"/>
            <date day="4" month="1" year="2024"/>
            <author login="lkishalmi"/>
            <compatibility semantic="compatible" addition="yes" deprecation="no"/>
            <description>
                <p>
                    Gradle 6.7 introduced Java Toolchains to separate Gradle Java Runtime
                    and the Java used for compilation (and other Java execution).
                    <code><a href="@TOP@/org/netbeans/modules/gradle/java/api/GradleJavaSourceSet.html#getCompilerJavaHome(org.netbeans.modules.gradle.java.api.GradleJavaSourceSet.SourceType)">GradleJavaSourceSet.getCompilerJavaHome</a></code> has been added to
                    return the Java Home of the JDK in use for compilation.
                </p>
                <p>
                    In addition <code><a href="@TOP@/org/netbeans/modules/gradle/java/spi/support/JavaToolchainSupport.html">JavaToolchainSsupport</a></code>
                    is provided in order to be easily work with the JDK home directories.
                </p>
            </description>
            <class package="org.netbeans.modules.gradle.java.api" name="GradleJavaSourceSet"/>
            <class package="org.netbeans.modules.gradle.java.spi.support" name="JavaToolchainSupport"/>
        </change>
        <change id="sourceset-lang-output">
            <api name="gradle.java.api"/>
            <summary>Support for per-language output directories</summary>
            <version major="1" minor="19"/>
            <date day="28" month="6" year="2022"/>
            <author login="sdedic"/>
            <compatibility semantic="compatible" addition="yes" deprecation="no"/>
            <description>
                Each language plugin typically generates output to a specific directory. The mapping
                allows more precise output-to-source mapping.
            </description>
            <class package="org.netbeans.modules.gradle.java.api" name="GradleJavaSourceSet"/>
        </change>
        <change id="nested-class-locations">
            <api name="gradle.java.api"/>
            <summary>Location can represent nested classes</summary>
            <version major="1" minor="17"/>
            <date day="18" month="2" year="2022"/>
            <author login="ratcashdev"/>
            <compatibility semantic="compatible" deprecation="yes"/>
            <description>
                <code><a href="@TOP@/org/netbeans/modules/gradle/java/api/output/Location.html">Location</a></code>
                is now capabe to represent java code location inside nested classes as well.
            </description>
            <class package="org.netbeans.modules.gradle.java.api.output" name="Location"/>
            <issue number="NETBEANS-6041"/>
        </change>
        <change id="gradle-7.0-deprecation">
            <api name="gradle.java.api"/>
            <summary>Deprecating Gradle 7.0 removed API-s</summary>
            <version major="1" minor="13"/>
            <date day="10" month="4" year="2021"/>
            <author login="lkishalmi"/>
            <compatibility semantic="incompatible" deprecation="yes"/>
            <description>
                <code><a href="@TOP@/org/netbeans/modules/gradle/java/api/GradleJavaSourceSet.html">GradleJavaSourceSet</a></code> 
                methods <code>getCompileConfigurationName()</code> and <code>getRuntimeConfigurationName()</code> 
                were deprecated as Gradle 7.0 does no longer supports them. They return <code>null</code> on Gradle 7.0.
            </description>
            <class package="org.netbeans.modules.gradle.java.api" name="GradleJavaSourceSet"/>
            <issue number="NETBEANS-5541"/>            
        </change>
        <change id="run.argument.properties">
            <api name="gradle.java.api"/>
            <summary>Support for explicit commandline arguments</summary>
            <version major="1" minor="12"/>
            <date day="27" month="3" year="2021"/>
            <author login="sdedic"/>
            <compatibility semantic="compatible" addition="yes"/>
            <description>
                Gradle Java interpolate <code>javaExec.jvmArgs</code> and <code>javaExec.args</code>
                tokens in action mapping that can be used to pass explicit JVM and application
                parameters to user process started by Gradle build. For more details, see 
                <a href="@TOP@/org/netbeans/modules/gradle/java/api/ProjectActions.html#TOKEN_JAVAEXEC_JVMARGS">ProjectActions.TOKEN_JAVAEXEC_JVMARGS</a>
            </description>
            <class package="org.netbeans.modules.gradle.java.api" name="ProjectActions"/>
            <issue number="NETBEANS-5482"/>
        </change>
        <change>
            <api name="gradle.java.api"/>
            <summary>Support Kotlin Source Directories</summary>
            <version major="1" minor="15"/>
            <date day="22" month="11" year="2020"/>
            <author login="jpesek"/>
            <compatibility addition="yes"/>
            <description>
                Sourcsets introduce a new SourceType called KOTLIN
                It is possible to retrieve the kotlin source directories
                form a GradleJavaSourceSet from now.
            </description>
            <class package="org.netbeans.modules.gradle.java.api" name="GradleJavaSourceSet"/>
            <issue number="NETBEANS-5050"/>
        </change>
        <change>
            <api name="gradle.java.api"/>
            <summary>Support Generated Source Directories</summary>
            <version major="1" minor="8"/>
            <date day="5" month="7" year="2020"/>
            <author login="lkishalmi"/>
            <compatibility addition="yes"/>
            <description>
                Sourcsets introduce a new SourceType called GENERATED.
                It is possible to retrieve the generated source directories
                form a GradleJavaSourceSet from now.
            </description>
            <class package="org.netbeans.modules.gradle.java.api" name="GradleJavaSourceSet"/>
            <issue number="NETBEANS-4278"/>
        </change>
        <change>
            <api name="gradle.java.api"/>
            <summary>Compiler arguments are accessible for SourceSet-s and minor enhancements</summary>
            <version major="1" minor="4"/>
            <date day="16" month="9" year="2019"/>
            <author login="lkishalmi"/>
            <compatibility addition="yes"/>
            <description>
                Sourcsets can return the used compiler arguments on it's default
                compiler tasks for Java, Groovy and Scala as well.
            </description>
            <class package="org.netbeans.modules.gradle.java.api" name="GradleJavaSourceSet"/>
            <issue number="NETBEANS-2941"/>
        </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 Gradle Java Project API</title>
        </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-gradle-java@/index.html">Gradle Java Project API</a>.</p>

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

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

        </body>
    </htmlcontents>

</apichanges>
