Module Natures

This page describes the most common module natures as follows:

  • Plugin Name: the build type name, derived from the module nature name: com.microej.gradle.[NATURE_NAME].

  • Documentation: a link to the documentation.

  • Tasks: tasks available from the module nature, with the graph of their relationships.

  • Configuration: properties that can be defined to configure the module. Properties are defined inside the microej block of the build.gradle.kts file.

Add-On Library

Plugin Name: com.microej.gradle.addon-library

Documentation: Libraries

Tasks:

This plugin adds the following tasks to your project:

digraph mygraph {
    rankdir="RL";
    bgcolor="transparent"
    fontname="Helvetica,Arial,sans-serif"
    node [
        shape = box
        width = 1.5
        color = "#7dc5dc"
        style = filled
        fontname="Helvetica,Arial,sans-serif"
    ]
    edge [fontname="Helvetica,Arial,sans-serif"]
    "adp" [fillcolor = "#f76241"]
    "checkModule" [fillcolor = "#f76241"]
    "loadVee" [fillcolor = "#f76241"]
    "execTool" [fillcolor = "#f76241"]
    "build" -> "check"
    "check" -> "test"
    "test" -> "classes"
    "test" -> "testClasses"
    "test" -> "loadVee"
    "testClasses" -> "compileTestJava"
    "testClasses" -> "processTestResources"
    "processResources" -> "adp"
    "processTestResources" -> "adp"
    "processTestResources" -> "classes"
    "compileTestJava" -> "classes"
    "javadoc" -> "classes"
    "classes" -> "compileJava"
    "classes" -> "processResources"
    "build" -> "assemble"
    "assemble" -> "jar"
    "uploadArchives" -> "jar"
    "jar" -> "classes"
    "checkModule" -> "assemble"
    "check" -> "checkModule"
    "execTool" -> "loadVee"

    subgraph cluster_legend {
        label="Legend";
        microej [fillcolor="#f76241" label="MicroEJ task"];
        java [fillcolor="#7dc5dc" label="Java plugin or Base plugin task"];
        microej -> java [style=invis];
        java -> microej [style=invis];
    }
}

Configuration:

This module nature inherits from the configuration of all its tasks.

Application

Plugin Name: com.microej.gradle.application

Documentation: Standalone Application

Tasks:

This plugin adds the following tasks to your project:

digraph mygraph {
    rankdir="RL";
    bgcolor="transparent"
    fontname="Helvetica,Arial,sans-serif"
    node [
        shape = box
        width = 1.5
        color = "#7dc5dc"
        style = filled
        fontname="Helvetica,Arial,sans-serif"
    ]
    edge [fontname="Helvetica,Arial,sans-serif"]
    "adp" [fillcolor = "#f76241"]
    "checkModule" [fillcolor = "#f76241"]
    "loadKernelExecutable" [fillcolor = "#f76241"]
    "loadVee" [fillcolor = "#f76241"]
    "runOnSimulator" [fillcolor = "#f76241"]
    "buildWPK" [fillcolor = "#f76241"]
    "buildApplicationObjectFile" [fillcolor = "#f76241"]
    "buildExecutable" [fillcolor = "#f76241"]
    "buildVirtualDevice" [fillcolor = "#f76241"]
    "buildFeature" [fillcolor = "#f76241"]
    "runOnDevice" [fillcolor = "#f76241"]
    "execTool" [fillcolor = "#f76241"]
    "generateApplicationWrapper" [fillcolor = "#f76241"]
    "compileWrapperJava" [fillcolor = "#f76241"]
    "buildFeatureFromWPK" [fillcolor = "#f76241"]
    "build" -> "check"
    "check" -> "test"
    "test" -> "classes"
    "test" -> "testClasses"
    "test" -> "loadVee"
    "testClasses" -> "compileTestJava"
    "testClasses" -> "processTestResources"
    "processResources" -> "adp"
    "processTestResources" -> "adp"
    "processTestResources" -> "classes"
    "compileTestJava" -> "classes"
    "javadoc" -> "classes"
    "classes" -> "compileJava"
    "classes" -> "processResources"
    "build" -> "assemble"
    "assemble" -> "jar"
    "assemble" -> "buildWPK"
    "uploadArchives" -> "jar"
    "jar" -> "classes"
    "runOnSimulator" -> "classes"
    "runOnSimulator" -> "loadVee"
    "checkModule" -> "assemble"
    "check" -> "checkModule"
    "buildWPK" -> "jar"
    "buildWPK" -> "javadoc"
    "buildApplicationObjectFile" -> "loadVee"
    "buildExecutable" -> "buildApplicationObjectFile"
    "buildExecutable" -> "loadVee"
    "buildVirtualDevice" -> "loadVee"
    "buildVirtualDevice" -> "buildWPK"
    "buildFeature" -> "loadVee"
    "buildFeature" -> "loadKernelExecutable"
    "runOnDevice" -> "buildExecutable"
    "execTool" -> "loadVee"
    "generateApplicationWrapper" -> "compileJava"
    "compileWrapperJava" -> "generateApplicationWrapper"
    "buildFeatureFromWPK" -> "loadVee"
    "buildFeatureFromWPK" -> "loadKernelExecutable"
    
    subgraph cluster_legend {
        label="Legend";
        microej [fillcolor="#f76241" label="MicroEJ task"];
        java [fillcolor="#7dc5dc" label="Java plugin or Base plugin task"];
        microej -> java [style=invis];
        java -> microej [style=invis];
    }
}

Java SE Library

Plugin Name: com.microej.gradle.jse-library

Tasks:

This plugin adds the following tasks to your project:

digraph mygraph {
    rankdir="RL";
    bgcolor="transparent"
    fontname="Helvetica,Arial,sans-serif"
    node [
        shape = box
        width = 1.5
        color = "#7dc5dc"
        style = filled
        fontname="Helvetica,Arial,sans-serif"
    ]
    edge [fontname="Helvetica,Arial,sans-serif"]
    "checkModule" [fillcolor = "#f76241"]
    "build" -> "check"
    "check" -> "test"
    "test" -> "classes"
    "test" -> "testClasses"
    "testClasses" -> "compileTestJava"
    "testClasses" -> "processTestResources"
    "processTestResources" -> "classes"
    "compileTestJava" -> "classes"
    "javadoc" -> "classes"
    "classes" -> "compileJava"
    "classes" -> "processResources"
    "build" -> "assemble"
    "assemble" -> "jar"
    "uploadArchives" -> "jar"
    "jar" -> "classes"
    "checkModule" -> "assemble"

    subgraph cluster_legend {
        label="Legend";
        microej [fillcolor="#f76241" label="MicroEJ task"];
        java [fillcolor="#7dc5dc" label="Java plugin or Base plugin task"];
        microej -> java [style=invis];
        java -> microej [style=invis];
    }
}

Configuration:

This module nature inherits from the configuration of all its tasks.

Mock

Plugin Name: com.microej.gradle.mock

Tasks:

This plugin adds the following tasks to your project:

digraph mygraph {
    rankdir="RL";
    bgcolor="transparent"
    fontname="Helvetica,Arial,sans-serif"
    node [
        shape = box
        width = 1.5
        color = "#7dc5dc"
        style = filled
        fontname="Helvetica,Arial,sans-serif"
    ]
    edge [fontname="Helvetica,Arial,sans-serif"]
    "checkModule" [fillcolor = "#f76241"]
    "buildMockRip" [fillcolor = "#f76241"]
    "build" -> "check"
    "check" -> "test"
    "test" -> "classes"
    "test" -> "testClasses"
    "testClasses" -> "compileTestJava"
    "testClasses" -> "processTestResources"
    "processTestResources" -> "classes"
    "compileTestJava" -> "classes"
    "javadoc" -> "classes"
    "classes" -> "compileJava"
    "classes" -> "processResources"
    "build" -> "assemble"
    "assemble" -> "jar"
    "uploadArchives" -> "jar"
    "jar" -> "classes"
    "checkModule" -> "assemble"
    "buildMockRip" -> "jar"

    subgraph cluster_legend {
        label="Legend";
        microej [fillcolor="#f76241" label="MicroEJ task"];
        java [fillcolor="#7dc5dc" label="Java plugin or Base plugin task"];
        microej -> java [style=invis];
        java -> microej [style=invis];
    }
}

Configuration:

This module nature inherits from the configuration of all its tasks.

Runtime Environment

Plugin Name: com.microej.gradle.runtime-environment

Tasks:

This plugin adds the following tasks to your project:

digraph mygraph {
    rankdir="RL";
    bgcolor="transparent"
    fontname="Helvetica,Arial,sans-serif"
    node [
        shape = box
        width = 1.5
        color = "#7dc5dc"
        style = filled
        fontname="Helvetica,Arial,sans-serif"
    ]
    edge [fontname="Helvetica,Arial,sans-serif"]
    "checkModule" [fillcolor = "#f76241"]
    "buildRuntimeEnvironmentJar" [fillcolor = "#f76241"]
    "compileRuntimeEnvironment" [fillcolor = "#f76241"]
    "shrinkRuntimeEnvironment" [fillcolor = "#f76241"]
    "build" -> "check"
    "check" -> "test"
    "test" -> "classes"
    "test" -> "testClasses"
    "testClasses" -> "compileTestJava"
    "testClasses" -> "processTestResources"
    "processTestResources" -> "classes"
    "compileTestJava" -> "classes"
    "javadoc" -> "classes"
    "classes" -> "compileJava"
    "classes" -> "processResources"
    "build" -> "assemble"
    "assemble" -> "jar"
    "uploadArchives" -> "jar"
    "jar" -> "classes"
    "checkModule" -> "assemble"
    "javadoc" -> "shrinkRuntimeEnvironment"
    "sourcesJar" -> "shrinkRuntimeEnvironment"
    "compileRuntimeEnvironment" -> "shrinkRuntimeEnvironment"
    "jar" -> "compileRuntimeEnvironment"
    "buildRuntimeEnvironmentJar" -> "compileRuntimeEnvironment"
    "build" -> "buildRuntimeEnvironmentJar"

    subgraph cluster_legend {
        label="Legend";
        microej [fillcolor="#f76241" label="MicroEJ task"];
        java [fillcolor="#7dc5dc" label="Java plugin or Base plugin task"];
        microej -> java [style=invis];
        java -> microej [style=invis];
    }
}

Configuration:

This module nature inherits from the configuration of all its tasks.

Tasks

This page describes the module nature tasks as follows:

  • Description: description and link to the related documentation.

  • Module Natures: list of Module Natures using this task.

  • Configuration: properties that can be defined to configure the task.

adp

Description: Executes the Addon Processors.

Inputs:

  • The project directory

Outputs:

  • The directory for each ADP output type (build/adp/all/main/java, build/adp/all/main/resources, build/adp/all/test/java, build/adp/all/test/resources)

Module Natures:

This task is used by the following module natures:

loadVee

Description: Loads the VEE.

Inputs:

  • The list of VEE archive files or folders.

Outputs:

  • The directory where the VEE is copied/extracted (build/vee)

Module Natures:

This task is used by the following module natures:

The loadVee task is used internally by the SDK and it is not intended to be executed by the user.

runOnSimulator

Description: Executes the Application with the Simulator.

Inputs:

  • The extracted VEE folder

  • The project classpath which contains the MicroEJ dependent application classes and resources

  • The Full Qualified Name of the Application main class or Feature class

  • The folder containing the application configuration (configuration)

  • The System properties

  • The debug mode

  • The debug port

Module Natures:

This task is used by the following module natures:

Configuration:

This task provides the following properties that can be defined in the microej extension:

Name

Description

Default

applicationEntryPoint

Full Qualified Name of the main class or the Feature class of the application. This option is required.

Not set

For example:

microej {
  applicationEntryPoint = "com.company.Main"
}

checkModule

Description: Checks the compliance of the module.

Inputs:

  • The list of the checkers to execute, separated by comas. If not set, all the checkers are executed.

  • The list of the checkers to skip, separated by comas.

Module Natures:

This task is used by the following module natures:

Configuration:

This task is not bound by default on any lifecycle task, which means that it should be called explicitly if it must be executed.

This task provides the following properties that can be defined in the microej extension:

Name

Description

Default

checkers

Comma-separated list of the names of the checkers to execute. An empty list means that all checkers are executed.

""

skippedCheckers

Comma-separated list of the names of the checkers to exclude. Only one property of checkers and skippedCheckers can be defined.

""

checkersRootDir

Path of the directory to use as root directory for the checkers.

Project directory.

For example:

microej {
  checkers = "readme,license"
}

buildApplicationObjectFile

Description: Build the object file of the Application.

Inputs:

  • The extracted VEE Port folder

  • The project classpath which contains the MicroEJ dependent application classes and resources

  • The Full Qualified Name of the Application EntryPoint

  • The folder containing the application configuration (configuration)

Outputs:

  • The object file (.o) of the Application and the archive of the build files (build/application/object/bsp/lib/microejapp.o)

  • The Zip file containing the generated build files (build/application/applicationObjectBuildFiles.zip)

Module Natures:

This task is used by the following module natures:

The buildApplicationObjectFile task is used internally by the SDK and it is not intended to be executed by the user.

buildExecutable

Description: Builds the Executable of an Application.

Inputs:

  • The extracted VEE Port folder

  • The folder containing the application configuration (configuration)

  • The object file (.o) of the Application

Outputs:

  • The directory in which the Executable file and the build files are generated (build/application/executable)

Module Natures:

This task is used by the following module natures:

buildWPK

Description: Builds the WPK of the Application.

Inputs:

  • The Application name

  • The Application version

  • The Full Qualified Name of the Application main class or Feature class

  • The Application JAR file

  • The Application Javadoc

  • The Jar files of the Application classpath

  • The folder containing the application configuration (configuration)

Outputs:

  • The WPK of the Application (build/libs/<application_name>.wpk)

Module Natures:

This task is used by the following module natures:

buildVirtualDevice

Description: Builds the Virtual Device of an Application.

Inputs:

  • The extracted VEE Port folder

  • The WPK of the Application

  • The project build classpath

  • The WPK of the Applications that must be pre-installed in the Virtual Device

Outputs:

  • The Zip file of the Virtual Device (build/libs/<application_name>-virtualDevice.zip)

Module Natures:

This task is used by the following module natures:

loadKernelExecutable

Description: Loads the Kernel Executable file.

Inputs:

  • The list of Kernel Executable files.

Outputs:

  • The loaded Kernel Executable file is copied (build/kernelExecutable/kernel.out)

Module Natures:

This task is used by the following module natures:

The loadKernelExecutable task is used internally by the SDK and it is not intended to be executed by the user.

buildFeature

Description: Builds the Feature file of an Application.

Inputs:

  • The Kernel Virtual Device

  • The folder containing the Kernel Executable file (build/kernelExecutable)

  • The project classpath

  • The path of the folder where the Feature file must be generated (build/application/feature)

Outputs:

  • The generated Feature file (build/application/feature/application.fo)

  • The Zip file containing the generated build files (build/libs/<application_name>-buildFiles.zip)

Module Natures:

This task is used by the following module natures:

runOnDevice

Description: Runs the Executable on a Device.

Inputs:

  • The extracted VEE Port folder

  • The folder containing the Executable file (build/application/executable)

  • The configuration file with all the properties set to launch the build of the Executable (build/properties/target.properties)

Module Natures:

This task is used by the following module natures:

buildMockRip

Description: Builds the Mock RIP.

Inputs:

  • The Mock JAR file

Outputs:

  • the RIP file of the Mock (build/libs/<project_name>-<project_version>.rip)

Module Natures:

This task is used by the following module natures:

execTool

Description: Runs the given MicroEJ Tool.

Inputs:

  • The extracted VEE Port folder

  • The configuration file with all the properties set to launch the application (build/properties/target.properties)

  • The folder containing the application configuration (configuration)

Module Natures:

This task is used by the following module natures:

generateApplicationWrapper

Description: Generates the Application Wrapper to be able to run the Application on a VEE Port and a Kernel.

Inputs:

  • The Application EntryPoint

  • The configuration directory of the project

  • The project classpath which contains the MicroEJ dependent application classes and resources

Outputs:

  • The directory in which the Wrapper Java class has been generated (build/generated/microej-app-wrapper/java)

  • The directory in which the Wrapper resources have been generated (build/generated/microej-app-wrapper/resources)

Module Natures:

This task is used by the following module natures:

The generateApplicationWrapper task is used internally by the SDK and it is not intended to be executed by the user.

compileWrapperJava

Description: Compiles the Application Wrapper to be able to run the Application on a VEE Port and a Kernel.

Inputs:

  • The directory containing the Wrapper Java class (build/generated/microej-app-wrapper/java)

Outputs:

  • The directory in which the compiled wrapper class is generated (build/generated/microej-app-wrapper/classes)

Module Natures:

This task is used by the following module natures:

The compileWrapperJava task is used internally by the SDK and it is not intended to be executed by the user.

shrinkRuntimeEnvironment

Description: Shrinks the Java source files according to the provided Kernel APIs.

Inputs:

  • Project Kernel API (src/main/resources/kernel.api)

  • Project Java sources (src/main/java)

  • The Kernel API files of the Runtime classpath.

Outputs:

  • The directory in which shrunk Java sources are generated (build/runtimeEnvironment/shrunkSources)

Module Natures:

This task is used by the following module natures:

The shrinkRuntimeEnvironment task is used internally by the SDK and it is not intended to be executed by the user.

compileRuntimeEnvironment

Description: Compiles the Runtime Environment Kernel APIs.

Inputs:

  • The directory in which shrunk Java sources are generated (build/runtimeEnvironment/shrunkSources)

  • The project classpath

Outputs:

  • The directory in which shrunk Java classes are generated (build/runtimeEnvironment/shrunkClasses)

Module Natures:

This task is used by the following module natures:

The compileRuntimeEnvironment task is used internally by the SDK and it is not intended to be executed by the user.

buildRuntimeEnvironmentJar

Description: Builds the Runtime Environment Jar file.

Inputs:

  • The directory in which shrunk Java classes are generated (build/runtimeEnvironment/shrunkClasses)

Outputs:

  • The Jar file of the Runtime Environment (build/libs/<project_name>-<project_version>-runtime-environment.jar)

Module Natures:

This task is used by the following module natures:

The buildRuntimeEnvironmentJar task is used internally by the SDK and it is not intended to be executed by the user.

buildFeatureFromWPK

Description: Builds the Feature binary file from a dependent Application.

Inputs:

  • The Kernel Virtual Device

  • The folder containing the Kernel Executable file (build/kernelExecutable)

  • The WPK of the dependent Application

  • The path of the folder where the Feature file must be generated (build/application/wpkFeature)

Outputs:

  • The generated Feature file (build/application/wpkFeature/application.fo)

  • The Zip file containing the generated build files (build/libs/wpkFeature-buildFiles.zip)

Module Natures:

This task is used by the following module natures:

Global Properties

The following properties are available in any module:

Name

Description

Default

microejConflictResolutionRulesEnabled

Boolean to enabled or disabled the MicroEJ conflict resolution rules.

true

For example:

microej {
  microejConflictResolutionRulesEnabled = false
}