blob: f3481b1b6f11c4a57bc6da0aa7efc9f361d793ec [file] [log] [blame]
<?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">Gradle Project API</apidef>
<!-- etc. -->
</apidefs>
<!-- ACTUAL CHANGES BEGIN HERE: -->
<changes>
<change id="gradle-reports">
<api name="general"/>
<summary>Rich exception reports are exported from Gradle process.</summary>
<version major="2" minor="27"/>
<date day="20" month="8" year="2022"/>
<author login="sdedic"/>
<compatibility semantic="compatible" addition="yes"/>
<description>
Errors are transferred including their causes and script location(s), so the IDE may provide better messages or hints.
<p>
The new class <code>
<a href="@TOP@/org/netbeans/modules/gradle/api/GradleReport.html">GradleReport</a>
</code> that contain this information is available from
<code><a href="@TOP@/org/netbeans/modules/gradle/api/GradleBaseProject.html#getProblems">GradleBaseProject.getProblems()</a></code> method.
</p>
</description>
</change>
<change id="configuration-dependencies">
<api name="general"/>
<summary>Allow to inspect dependency tree</summary>
<version major="2" minor="27"/>
<date day="12" month="8" year="2022"/>
<author login="sdedic"/>
<compatibility semantic="compatible" addition="yes"/>
<description>
Gradle APIs allow to list dependencies as a flat list, mixing the 4th+ party dependencies in. The API extension allows
to inspect the dependency structure and determine what configuration the dependency originates from.
</description>
<class package="org.netbeans.modules.gradle.api" name="GradleBaseProject"/>
<class package="org.netbeans.modules.gradle.api" name="GradleConfiguration"/>
</change>
<change id="gradlefiles-versioncatalog">
<api name="general"/>
<summary>GradleFiles.Kind.VERSION_CATALOG introduced</summary>
<version major="2" minor="25"/>
<date day="15" month="7" year="2022"/>
<author login="lkishalmi"/>
<compatibility semantic="compatible" addition="yes"/>
<description>
<a href="@TOP@/org/netbeans/modules/gradle/spi/GradleFiles.Kind.html#VERSION_CATALOG">GradleFiles.Kind.VERSION_CATALOG</a>
was addedd to represent <code>$rootDir/gradle.libs.versions.toml</code> file of the project.
<code>
<a href="@TOP@/org-netbeans-modules-gradle/org/netbeans/modules/gradle/spi/GradleFiles.html#getFile-org.netbeans.modules.gradle.spi.GradleFiles.Kind-">GradleFiles.getKind(VERSION_CATALOG)</a>
</code> can be used to retrieve the represented file. (The file might not exists though.)
</description>
<class package="org.netbeans.modules.gradle.api" name="NbGradleProject"/>
</change>
<change id="gradleproject-files">
<api name="general"/>
<summary>GradleFiles can be obtained from API</summary>
<version major="2" minor="24"/>
<date day="30" month="4" year="2022"/>
<author login="sdedic"/>
<compatibility semantic="compatible" addition="yes"/>
<description>
<a href="@TOP@/org/netbeans/modules/gradle/spi/GradleFiles.html">GradleFiles</a> can be obtained from
<a href="@TOP@/org/netbeans/modules/gradle/api/NbGradleProject.html">NbGradleProject</a> instance. Gradle project
users can use <code>GradleFiles</code> to get important files or pathnames in the project.
</description>
<class package="org.netbeans.modules.gradle.api" name="NbGradleProject"/>
</change>
<change id="gradle-cli-update">
<api name="general"/>
<summary>GradleCommandLine Flag, Parameter, and Property implements GradleOptionItem interface</summary>
<version major="2" minor="23"/>
<date day="17" month="2" year="2022"/>
<author login="lkishalmi"/>
<compatibility semantic="compatible" addition="yes"/>
<description>
<p>
Added GradleOptionItem interface to <code><a href="@TOP@/org/netbeans/modules/gradle/api/execute/GradleCommandLine.html">GradleCommandLine</a></code>
in order to support a common interface for Flaf, Parameter, and Property enums.
</p>
<p>
<code>
<a href="@TOP@/org/netbeans/modules/gradle/api/execute/GradleCommandLine.html">GradleCommandLine</a>
</code> also can be aware of the GradleDistribution it is plan to be used with, so it got a few
new constructors supporting that.
</p>
<p>
<code>
<a href="@TOP@/org/netbeans/modules/gradle/api/execute/RunUtils.html#getCompatibleGradleDistribution-org.netbeans.api.project.Project-">RunUtils.getCompatibleGradleDistribution</a>
</code>is added to help retrieve the closest Gradle distribution a project could use to invoke Gradle build actions.
</p>
</description>
</change>
<change id="tooling-runWorkingDir-runEnvironment">
<api name="general"/>
<summary>NetBeans Tooling plugin recognizes "runWorkingDir" and "runEnvironment" properties.</summary>
<version major="2" minor="21"/>
<date day="23" month="9" year="2021"/>
<author login="entlicher"/>
<compatibility semantic="compatible" addition="yes"/>
<description>
Introduced <code>runWorkingDir</code> and <code>runEnvironment</code> project properties that can be passed
to NetBeans Tooling plugin in order to inject user parameters into gradle JavaExec task configurations.
The property <code>runWorkingDir</code> shall contain an absolute path of the working directory.
The property <code>runEnvironment</code> shall contain possibly quoted space-separated expressions of
<code>VAR_NAME=VAR_VALUE</code>, or <code>!VAR_NAME</code>. The <code>VAR_NAME=VAR_VALUE</code> sets
environment variable <code>VAR_NAME</code> to value <code>VAR_VALUE</code> and <code>!VAR_NAME</code>
removes variable <code>VAR_NAME</code> from the set of environment variables.
</description>
</change>
<change id="gradle-init">
<api name="general"/>
<summary>
Request project creation via Gradle init.
</summary>
<version major="2" minor="20"/>
<date day="8" month="8" year="2021"/>
<author login="sdedic"/>
<compatibility semantic="compatible" addition="yes"/>
<description>
Use <a href="@TOP@/org/netbeans/modules/gradle/spi/newproject/TemplateOperation.html#createGradleInit-java.io.File-java.lang.String-">createGradleInit</a>
to ask Gradle to create new project using its <code>init</code> functionality.
</description>
<class package="org.netbeans.modules.gradle.spi.newproject" name="TemplateOperation"/>
</change>
<change id="config-disabled-action">
<api name="general"/>
<summary>
Action can be disabled for a configuration.
</summary>
<date day="19" month="6" year="2021"/>
<author login="sdedic"/>
<compatibility semantic="compatible" addition="yes"/>
<description>
<a href="@TOP@/org/netbeans/modules/gradle/spi/actions/GradleActionsProvider.html">GradleActionsProviders</a> may
<b>disable action</b> in a provided configuration, for example if the configured environment does not permit
the action to be run.
</description>
<class package="org.netbeans.modules.gradle.api.execute" name="ActionMapping"/>
</change>
<change id="configurations">
<api name="general"/>
<summary>
Support for Project Configurations
</summary>
<version major="2" minor="13"/>
<date day="30" month="5" year="2021"/>
<author login="sdedic"/>
<compatibility semantic="compatible" addition="yes"/>
<description>
<p>
Concept of <a href="@org-netbeans-modules-projectapi@/org/netbeans/spi/project/ProjectConfiguration.html">ProjectConfigurations</a> was implemented for
Gradle projects with <a href="@TOP@/org/netbeans/modules/gradle/api/execute/GradleExecConfiguration.html">GradleExecConfiguration</a> class. Configurations
can be created by the user and are stored in project private/shared configuration storage. Configurations can be contributed by Plugins using
<a href="@TOP@/org/netbeans/modules/gradle/spi/actions/GradleActionsProvider.html#define-configuration">GradleActionsProvider</a>. A configuration
<a href="@org-netbeans-modules-projectapi@/org/netbeans/spi/project/ProjectConfigurationProvider.html#setActiveConfiguration--">can be activated</a> or
explicitly requested for <a href="@TOP@/org/netbeans/modules/gradle/api/execute/GradleExecConfiguration.html#request-for-invocation">action invocation.</a>.
</p>
<p>
Actions can have different <a href="@TOP@/org/netbeans/modules/gradle/api/actions/ActionMapping.html">ActionMappings</a> in individual Configurations, user-defined
or provided for specific configuration by <a href="@TOP@/org/netbeans/modules/gradle/spi/actions/GradleActionsProvider.html">GradleActionsProvider</a>.
</p>
<p>
Action providers can be added fully declarative, using XML layer: See <a href="@TOP@/org/netbeans/modules/gradle/spi/actions/DefaultGradleActionsProvider.html##forProjectLayer-org.openide.filesystems.FileObject-">
DefaultGradleActionsProvider.forProjectLayer</a>
</p>
</description>
<class package="org.netbeans.modules.gradle.api.execute" name="GradleExecConfiguration"/>
<class package="org.netbeans.modules.gradle.api.execute" name="RunUtils"/>
<class package="org.netbeans.modules.gradle.api.execute" name="RunConfig"/>
<class package="org.netbeans.modules.gradle.spi.actions" name="GradleActionsProvider"/>
</change>
<change id="reload-to-quality">
<api name="general"/>
<summary>
Added API to reload Gradle project information.
</summary>
<version major="2" minor="11"/>
<date day="18" month="4" year="2021"/>
<author login="sdedic"/>
<compatibility semantic="compatible" addition="yes"/>
<description>
Project information can be refreshed to a desired quality using <a href="@TOP@/org/netbeans/modules/gradle/api/NbGradleProject.html#toQuality-java.lang.String-org.netbeans.modules.gradle.api.NbGradleProject.Quality-boolean-">NbGradleProject.toQuality</a>.
The caller may chain after reload completes or block until the project is loaded.
</description>
<class package="org.netbeans.modules.gradle.api" name="NbGradleProject"/>
<issue number="NETBEANS-5627"/>
</change>
<change id="local-gradle-version-discovery">
<api name="general"/>
<summary>GradleDistributionManager can detect local Gradle Distributions</summary>
<version major="2" minor="10"/>
<date day="12" month="4" year="2021"/>
<author login="lkishalmi"/>
<compatibility semantic="compatible" addition="yes"/>
<description>
Added <code><a href="@TOP@/org/netbeans/modules/gradle/api/execute/GradleDistributionManager.html#availableLocalDistributions--">GradleDistributionManager.availableLocalDistributions()</a></code>
method to help detection the already available GradleDistribution-s installed in the system.
</description>
</change>
<change id="tooling-runJvmArgs">
<api name="general"/>
<summary>NetBeans Tooling plugin recognizes "runJvmArgs" property</summary>
<version major="2" minor="9"/>
<date day="27" month="3" year="2021"/>
<author login="sdedic"/>
<compatibility semantic="compatible" addition="yes"/>
<description>
Introduced <code>runJvmArgs</code> project property that can be passed to NetBeans Tooling plugin in order to inject user JVM parameters
into gradle JavaExec task configurations. The property value shall contain whitespace-separated JVM arguments.
</description>
</change>
<change id="trust-question-branding">
<api name="general"/>
<summary>Project trust dialog can be customized by branding</summary>
<version major="2" minor="8"/>
<date day="3" month="3" year="2021"/>
<author login="sdedic"/>
<compatibility semantic="compatible" addition="yes"/>
<description>
Branding API can be used to select and order options present in "Trust Gradle project for execution" confirmation
dialog. See <a href="@TOP@/org/netbeans/modules/gradle/api/execute/RunUtils.html#isProjectTrusted-org.netbeans.api.project.Project-boolean-">RunUtils.isProjectTrusted</a>.
</description>
</change>
<change id="deprecate-experimental-settings">
<api name="general"/>
<summary>Make ProjectActionMappingProvider available for other modules.</summary>
<version major="2" minor="7"/>
<date day="1" month="1" year="2021"/>
<author login="lkishalmi"/>
<compatibility semantic="incompatible" deprecation="yes"/>
<description>
<p>
Experimental settings, <code>openLazy</code> and <code>disableDiskCache</code> in
<a href="@TOP@/org/netbeans/modules/gradle/spi/GradleSettings.html">GradleSettings</a>
made deprecated and no longer affect the IDE behavior.
</p>
</description>
</change>
<change id="expose-project-action-mapping-provider">
<api name="general"/>
<summary>Make ProjectActionMappingProvider available for other modules.</summary>
<version major="2" minor="6"/>
<date day="15" month="10" year="2020"/>
<author login="lkishalmi"/>
<compatibility semantic="compatible"/>
<description>
<p>
Made <a href="@TOP@/org/netbeans/modules/gradle/spi/actions/ProjectActionMappingProvider.html">ProjectActionMappingProvider</a> available
for other modules, so they either can provide an alternative implementation or most probably able to take a sneak peek on
the current action configuration.
</p>
<p>
In order to make other modules interpret the action mapping in context <a href="@TOP@/org/netbeans/modules/gradle/api/execute/RunUtils.html">RunUtils</a> got a new evaluateActionArgs
utility method which can replace tokens provided in ActionMapping arguments.
</p>
<p>
Finally to support this token replacement, <a href="@TOP@/org/netbeans/modules/gradle/spi/actions/ReplacementTokenProvider.html">ReplacementTokenProvider</a>
got a new static method <code>replaceTokens</code>.
</p>
</description>
</change>
<change id="reusetabs">
<api name="general"/>
<summary>Default for reusing tabs</summary>
<version major="2" minor="5"/>
<date day="15" 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> in Gradle projects.
</p>
</description>
</change>
<change id="gradle-buildsrc-project">
<api name="general"/>
<summary>GradleFiles SPI has the methods to deal with the buildSrc project.</summary>
<version major="2" minor="4"/>
<date year="2020" month="10" day="7"/>
<author login="lkishalmi"/>
<compatibility binary="compatible" source="compatible"/>
<description>
<p>
<code><a href="@TOP@/org/netbeans/modules/gradle/spi/GradleFiles.html#isBuildSrcProject()">GradleFiles.isBuildSrcProject()</a></code> was
added to detect if a project id a buildSrc project, and a new file Kind has been introduced <code>BUILD_SRC</code>.
</p>
</description>
</change>
<change id="gradle-project-connection">
<api name="general"/>
<summary>Expose Gradle ProjectConnection through Project's Lookup.</summary>
<version major="2" minor="4"/>
<date year="2020" month="8" day="21"/>
<author login="lkishalmi"/>
<compatibility binary="compatible" source="compatible"/>
<description>
<p>
Gradle's <code><a href="https://docs.gradle.org/current/javadoc/org/gradle/tooling/ProjectConnection.html">ProjectConnection</a></code>
is now available on the project lookup, making possible for modules to interact with Gradle in deeper level.
</p>
</description>
</change>
<change id="gradle-distribution-manager">
<api name="general"/>
<summary>Expose GradleDistribution manager as an API.</summary>
<version major="2" minor="4"/>
<date year="2020" month="8" day="21"/>
<author login="lkishalmi"/>
<compatibility binary="compatible" source="compatible"/>
<description>
<p>
Starting to give the project more freedom over control of
their <code><a href="@TOP@/org/netbeans/modules/gradle/api/execute/GradleDistributionManager.GradleDistribution.html">GradleDistribution</a></code> in use, the previously non-API
<code><a href="@TOP@/org/netbeans/modules/gradle/api/execute/GradleDistributionManager.html">GradleDistributionManager</a></code> got a review and got moved into
execution apis. Together with the <code>GradleDistributionProvider</code>
(API/SPI) it is possible to fetch information on the Gradle
Distribution used in the project.
</p>
<p>
<code><a href="@TOP@/org/netbeans/modules/gradle/spi/execute/GradleDistributionProvider.html">GradleDistributionProvider</a></code> has a default implementation it
is not necessary to implement it. With that new interface
the <code><a href="@TOP@/org/netbeans/modules/gradle/api/execute/RunUtils.html#evaluateGradleDistribution-org.netbeans.api.project.Project-boolean-">RunUtils.evaluateGradleDistribution()</a></code>
got deprecated.
</p>
</description>
</change>
<change id="gradle-java-independence">
<api name="general"/>
<summary>Remove Java Platform dependency.</summary>
<version major="2" minor="3"/>
<date year="2020" month="7" day="15"/>
<author login="lkishalmi"/>
<compatibility binary="compatible" source="compatible"/>
<description>
<p>
Due to recent movement and the plan to support Gradle native
projects as well in the future the dependency on
Java Platform module has been removed.
</p>
<p>
The removal affects <code><a href="@TOP@/org/netbeans/modules/gradle/api/execute/RunUtils.html#getActivePlatform-java.lang.String-">RunUtils.getActivePlatform</a></code>
methods. The method returns a Pair with <code>null</code> as <code>second</code> which
indicates a broken Platform. This is for keeping the binary compatibility only.
These methods shall be not used at all. There is no
replacement planned for these API functions.
</p>
<p>
Added <code><a href="@TOP@/org/netbeans/modules/gradle/spi/exectute/GradleJavaPlatformProvider.html">GradleJavaPlatformProvider</a></code>
which can be put into the project lookup, to be able to specify the JDK
to be used for Gradle build execution.
</p>
</description>
</change>
<change id="gradle-project-trust">
<api name="general"/>
<summary>Introduce Trust relationship with Gradle Projects to prevent unintentional Gradle invocation.</summary>
<version major="2" minor="2"/>
<date year="2020" month="6" day="24"/>
<author login="lkishalmi"/>
<compatibility binary="compatible" source="compatible"/>
<description>
<p>
Gradle projects are maintaining a trust attribute from now.
This trust is based on the NetBeans user directory and the
a secret placed in the Gradle Root project directory.
</p>
<p>
Trusting any project of a multi-project Gradle build means
trust all project in that multi-project project, as the
trust is placed on the root project.
</p>
<p>
This change is backported to version 2.0.1 as well.
</p>
<p>
Added <code><a href="@TOP@/org/netbeans/modules/gradle/api/execute/RunUtils.html#isProjectTrusted-org.netbeans.api.project.Project-boolean-">RunUtils.isProjectTrusted(Project,boolean)</a></code>
where plugin can check if a project is trusted or request
one time trust with interactive mode.
</p>
<p>
There is no API/SPI to mark a project trusted/untrusted.
Projects are not trusted by default, but become trusted once
a priming build is requested or a Gradle task is invoked as
a result of an user action.
</p>
<p>
Added <code><a href="@TOP@/org/netbeans/modules/gradle/spi/GradleSettings.GradleExecutionRule.html">GradleSettings.GradleExecutionRule</a></code>
with setter ad getter in <code><a href="@TOP@/org/netbeans/modules/gradle/spi/GradleSettings.html">GradleSettings</a></code>
as a global option to how to treat automatic Gradle Execution globally.
</p>
</description>
</change>
<change id="gradle-tooling-api-split">
<api name="general"/>
<summary>Move Gradle Tooling API to a separate module.</summary>
<version major="2" minor="0"/>
<date year="2020" month="4" day="4"/>
<author login="lkishalmi"/>
<compatibility binary="incompatible" source="compatible"/>
<description>
<p>
The Gradle Tooling API has been removed from this module to
its own into: <code>org.netbeans.modules.libs.gradle</code>
</p>
<p>
Modules depending on previous versions of this module need
an additional dependency on the new library module. The
main reason behind this split is that it is easier to do
Gradle Tooling API update in the future.
</p>
<pre>
&lt;dependency&gt;
&lt;code-name-base&gt;org.netbeans.modules.libs.gradle&lt;/code-name-base&gt;
&lt;compile-dependency/&gt;
&lt;run-dependency&gt;
&lt;release-version&gt;6&lt;/release-version&gt;
&lt;specification-version&gt;6.3&lt;/specification-version&gt;
&lt;/run-dependency&gt;
&lt;/dependency&gt;
</pre>
<p>
<b>Note:</b> The specification version of the <code>org.netbeans.modules.libs.gradle</code>
module is matching the provided Gradle Tooling API version. The release version number
follows the major version.
</p>
<p>
Besides of the library removal the source code provided in
this module are backward compatible.
</p>
</description>
<issue number="NETBEANS-4118"/>
</change>
<change id="allow-cancelling-gradle-process">
<api name="general"/>
<summary>Added <code>RunUtils.cancelGradle(RunConfig)</code> to allow plugins to cancel an executed Gradle process.</summary>
<version major="1" minor="4"/>
<date year="2019" month="10" day="22"/>
<author login="lkishalmi"/>
<compatibility source="compatible"/>
<description>
<p>
Added <code><a href="@TOP@/org/netbeans/modules/gradle/api/execute/RunUtils.html#cancelGradle-org.netbeans.modules.gradle.api.execute.RunConfig-">RunUtils.cancelGradle(RunConfig)</a></code> to allow plugins to cancel an executed Gradle process.
</p>
</description>
<class package="org.netbeans.modules.gradle.api.execute" name="RunUtils"/>
<issue number="NETBEANS-3279"/>
</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 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-gradle@/index.html">Gradle Project API</a>.</p>
<!-- The actual lists of changes, as summaries and details: -->
<hr/>
<standard-changelists module-code-name="org.netbeans.modules.gradle/0"/>
<hr/>
<p>@FOOTER@</p>
</body>
</htmlcontents>
</apichanges>