NetBeans Architecture Answers for Gradle Projects module


Interfaces table

Group of java interfaces
Interface NameIn/OutStabilitySpecified in What Document?
GradleProjectAPIExportedUnder Development

The Gradle Project API provides some miscellaneous friend APIs and SPIs relating to Gradle projects.

CommonAnnotationsAPIImportedStable

The module is needed for compilation. The module is used during runtime. Specification version 1.23.1 is required.

ClassPathAPIsImportedOfficial

The module is needed for compilation. The module is used during runtime. Specification version 1.41.1 is required.

ProgressImportedOfficial

The module is needed for compilation. The module is used during runtime. Specification version 1.47.1 is required.

ProgressSwingImportedOfficial

The module is needed for compilation. The module is used during runtime. Specification version 1.47.1 is required.

DataSystemsAPIImportedOfficial

The module is needed for compilation. The module is used during runtime. Specification version 1.6.1 is required.

MultiViewImportedStable

The module is needed for compilation. The module is used during runtime. Specification version 1.39 is required.

org.netbeans.libs.json_simpleImportedPrivate

The module is needed for compilation. The module is used during runtime. Specification version 0.8.1 is required.

EditorModuleAPIImportedUnder Development

The module is needed for compilation. The module is used during runtime. Specification version 1.87.1.6.3.23.55 is required.

CodeCompletionAPIImportedOfficial

The module is needed for compilation. The module is used during runtime. Specification version 1.44.1.2 is required.

EditorHyperlinkSPIImportedUnder Development

The module is needed for compilation. The module is used during runtime. Specification version 4.7.1.23.3.55 is required.

MimeLookupAPIImportedOfficial

The module is needed for compilation. The module is used during runtime. Specification version 1.40.1 is required.

ExternalExecutionAPIImportedStable

The module is needed for compilation. The module is used during runtime. Specification version 1.41.1 is required.

JavaPlatformAPIImportedOfficial

The module is needed for compilation. The module is used during runtime. Specification version 1.34.1 is required.

OptionsDialogSPIImportedOfficial

The module is needed for compilation. The module is used during runtime. Specification version 1.39.1 is required.

ProjectAPIImportedOfficial

The module is needed for compilation. The module is used during runtime. Specification version 1.57.1 is required.

ProjectUIAPIImportedOfficial

The module is needed for compilation. The module is used during runtime. Specification version 1.78 is required.

BaseProjectUIAPIImportedOfficial

The module is needed for compilation. The module is used during runtime. Specification version 1.79.0.9 is required.

GeneralQueriesAPIImportedOfficial

The module is needed for compilation. The module is used during runtime. Specification version 1.38.1 is required.

org.netbeans.spi.navigator.NavigatorPanelImportedStable

The module is needed for compilation. The module is used during runtime. Specification version 1.32.1 is required.

ActionsAPIImportedOfficial

The module is needed for compilation. The module is used during runtime. Specification version 6.34.1 is required.

org.openide.awtImportedOfficial

The module is needed for compilation. The module is used during runtime. Specification version 7.61 is required.

DialogsAPIImportedOfficial

The module is needed for compilation. The module is used during runtime. Specification version 7.36.1 is required.

ExecutionAPIImportedOfficial

The module is needed for compilation. The module is used during runtime. Specification version 9.0 is required.

ExplorerAPIImportedOfficial

The module is needed for compilation. The module is used during runtime. Specification version 6.56.1 is required.

FilesystemsAPIImportedOfficial

The module is needed for compilation. The module is used during runtime. Specification version 9.1 is required.

org.openide.filesystems.nbImportedPrivate

The module is needed for compilation. The module is used during runtime. Specification version 9.5 is required.

InputOutputAPIImportedOfficial

The module is needed for compilation. The module is used during runtime. Specification version 1.44.1 is required.

LoadersAPIImportedOfficial

The module is needed for compilation. The module is used during runtime. Specification version 7.56.2 is required.

ModulesAPIImportedOfficial

The module is needed for compilation. The module is used during runtime. Specification version 7.42.1 is required.

NodesAPIImportedOfficial

The module is needed for compilation. The module is used during runtime. Specification version 7.38.1 is required.

EditorAPIImportedOfficial

The module is needed for compilation. The module is used during runtime. Specification version 6.61.1 is required.

WeakListener.setAccessibleImportedUnder Development

The module is needed for compilation. The module is used during runtime. Specification version 9.3 is required.

LookupAPIImportedOfficial

The module is needed for compilation. The module is used during runtime. Specification version 8.24.1 is required.

UtilitiesAPIImportedOfficial

The module is needed for compilation. The module is used during runtime. Specification version 9.3 is required.

WindowSystemAPIImportedOfficial

The module is needed for compilation. The module is used during runtime. Specification version 6.70.1 is required.

slf4j.apiImportedPrivate

The module is used during runtime.

slf4j.jdk14ImportedPrivate

The module is used during runtime.

Group of layer interfaces
Interface NameIn/OutStabilitySpecified in What Document?
GradleProjectCustomizerExportedUnder Development

"Projects/org-netbeans-modules-gradle/Customizer" folder's content is used to construct the project's customizer. It's content is expected to be ProjectCustomizer.CompositeCategoryProvider instances. The lookup passed to the panels contains an instance of Project.

GradleLogicalViewProviderExportedUnder Development

"Projects/org-netbeans-modules-gradle/Nodes" folder's content is used to construct the project's child nodes. It's content is expected to be NodeFactory instances.

GradleLookupExportedUnder Development

"Projects/org-netbeans-modules-gradle/Lookup" folder's content is used to construct the project's additional lookup. It's content is expected to be LookupProvider instances. Gradle project provides LookupMergers for Sources, PrivilegedTemplates, RecommendedTemplates and other classes. Implementations added by 3rd parties will be merged into a single instance in the project's lookup.

"Projects/org-netbeans-modules-gradle/Plugins/<plugin-name>/Lookup" folder content is also used to contribute into the project lookup, based on the Gradle plugin ids, like "java-base".

GradleActionsExportedUnder Development

"Projects/org-netbeans-modules-gradle/Actions" folder'' content is used to add item's to the main project node popup. It's content is expected to be Action instances.

Group of java.io.File interfaces
Interface NameIn/OutStabilitySpecified in What Document?
nb-actions.xmlExportedUnder Development

NetBeans Gradle support recognizes special file(s) that can be placed next to a build.gradle. These files contain description of bindings between NetBeans UI actions (compile, run, debug, etc.) and the actual Gradle goals to execute.

<!DOCTYPE actions SYSTEM "action-mapping.dtd">
<actions>
    <action name="clean">
        <args>clean</args>
    </action>

    <action name="download.javadoc">
        <!--
            We do not really execute any tasks here, rather just reload the project
            allowing it to go online and fetch some dependencies. So in this case
            the action is forcing a project reload with some argiments.
        -->
        <reload rule="ALWAYS_ONLINE">
            <args>-PdownloadJavadoc=${requestedComponent}</args>
        </reload>
    </action>

    <action name="download.sources">
        <reload rule="ALWAYS_ONLINE">
            <args>-PdownloadSources=${requestedComponent}</args>
        </reload>
    </action>

    <action name="download.sourcesanddoc">
        <reload rule="ALWAYS_ONLINE">
            <args>-PdownloadSources=${requestedComponent} -PdownloadJavadoc=${requestedComponent}</args>
        </reload>
    </action>

    <!--
        The following section is used and preferred when the 'virtual plugin' named
        'root' is present in the project plugin list marking that project is a root
        project.
    -->
    <apply-for plugins="root">
        <action name="clean">
            <args>clean</args>
        </action>

        <action name="build">
            <args>assemble</args>
        </action>

        <action name="rebuild">
            <args>clean assemble</args>
        </action>
    </apply-for>

    <!--
        The following section is used and preferred when the plugin named
        'java' is present in the project plugin list.
    -->
    <apply-for plugins="java">
        <action name="test.single">
            <args>--rerun-tasks test --tests ${selectedMethod}</args>
        </action>
        <action name="run.single.method">
            <args>--rerun-tasks test --tests ${selectedMethod}</args>
        </action>
        <action name="debug.single.method">
            <args>--rerun-tasks test --debug-jvm --tests ${selectedMethod}</args>
        </action>
        <action name="debug.test.single">
            <args>--rerun-tasks test --debug-jvm --tests ${selectedMethod}</args>
        </action>

        <action name="javadoc">
            <args>javadoc</args>
        </action>

        <!--
            The debug.fix action is not repeatable. So it cannot be repeated
            in the Output Tab UI.
        -->
        <action name="debug.fix" repeatable="false">
            <args>--offline --no-rebuild ${affectedBuildTasks}</args>
            <reload rule="NEVER"/>
        </action>
    </apply-for>

    <!--
        Custom actions are present under the "Run Gradle' popup on the project
        node. They shall be named with a prefix 'custom-' and an project unique
        number. They can have a displayName which is used to present the action
        in the UI.
    -->
    <action name="custom-1" displayName="Publish Plugin">
        <!-- Using 'input:' token provider will request user input
             when invoking the action. I this case it request a value displayed
             as 'Version', and fills up the default as '0.4.x'. The default
             value part is optional.
        -->
        <args>-Pversion=${input:Version,0.4.x}
clean
publishPlugins</args>


</actions>
             

Group of lookup interfaces
Interface NameIn/OutStabilitySpecified in What Document?
waitFinishedExportedPrivate

When calling ActionProvider.invokeAction(name, lookup) an instance of AfterBuildActionHook can be placed into lookup. It is then notified when the execution of the action is finished. Useful when writing tests.


General Information


Project and platform dependencies


Deployment


Compatibility with environment


Access to resources


Lookup of components


Execution Environment


Format of files and protocols


Performance and Scalability