Creating an Adelia build project
A project is created in several steps, described below:
Create a directory that will contain the project on the computer on which Adelia is installed,
Copy the files from the %ADELIWS%\Build\adelia project template directory to the newly created directory,
Using an administrator profile, open a DOS command window and navigate to the project directory.
Create the project using the command gradlew.bat -PadelAppName=XXX adelAppCreate, replacing XXX with the name of the application to be built (alphanumeric value no longer than 30 characters, with no spaces):
If the operation is successful, a directory will be created with the name of the application to be built, together with the following Gradle files: build.gradle, gradle.properties and adelAppSettings.gradle.
This directory is initially empty. It will be populated during the project initialization phase:
Configuring an Adelia build project
When you have created a project, you must configure it before it can be executed.
Build projects are configured and initialized based on the settings specified in the gradle.properties file, namely:
General settings
adelAppName (mandatory)
String (maximum 30 characters, with no spaces) representing the name of the application to be built.
It is pre-filled with an initial value during the project creation phase.
adelEnvName (mandatory)
String representing the name of the Adelia environment containing the application to be built.
adelLstAppArea (mandatory)
List of Adelia application area names containing software components.
Names must be entered on a single line, separated by one or more space characters.
adelWinClientEntryPoints (optional)
List of object file names (.EXE file names) for batch and interactive VAdelia programs generated for Windows, constituting WinClient artifacts.
Names must be entered on a single line, separated by one or more space characters.
If this parameter is not configured, all generated .EXE files will be included in WinClient artifacts.
adelCreateSourceFilesArtifacts (optional)
This parameter is used to build artifacts containing 3GL application sources, as well as artifacts containing the application binary objects. The Y value allows the creation of these artifacts, whereas the default value N forbids it. The content of an 3GL sources artifact depends on the generation platform type:
- Windows: the artifact contains the generated source files with extensions .c and .h. Its container file is in ZIP format.
- Java (Standard and Cloud: the artifact contains the generated source files with extension .java Its container file is in JAR format.
The table 4 describes in detail the name of each sources artifact produced.
Version (mandatory)
String representing the application's version number.
Each built artifact will have the same version number. There are several types of version:
Release (or final) versions, representing the application's official versions (e.g.: 1.0.0
Snapshot versions, representing versions of the application during development (e.g.: 1.0 = 1-SNAPSHOT
Pre-release (or release-candidate) versions, representing potential candidates for final versions (e.g.: 1.0 = 1-RC01
Group (mandatory)
String representing the ID of the group or organization initiating the project.
The value obeys the same naming rules as Java packages (for example, com.hardis). The name of the project's top package is generally used. ↑ Top of page
Adelia generation settings
The build process uses the Adelia generation process to produce the necessary artifacts.
The object generation paths defined in the Adelia environment settings are changed in order to create the objects in the directory containing the Adelia build project.
adelGenErrMsg (optional)
Configuring the Adelia error message generation settings
It is possible to generate messages differently according to whether they belong to an Adelia application area or an environment.
Additionally, you can specify the list of generation types for each ownership level, selecting from:
ADELIA400,
VADELIA_WINDOWS,
VADELIA_JAVA,
VADELIA_CLOUD,
ADELIA_WEB,
WINDOWS_SERVER,
JAVA_SERVER,
AS400_SERVER
The configuration syntax is as follows: ownership level (*REPOSITORY for an environment or the name of the Adelia environment), followed by the list of generation types in parentheses.
Example 1: adelGenErrMsg=*REPOSITORY(ADELIA400 VADELIA_WINDOWS)
Configures the generation of messages relating to the environment, for the Adelia 400 and Visual Adelia Windows types.
Example 2: adelGenErrMsg=*REPOSITORY(VADELIA_CLOUD) APP_AREA_1(VADELIA_CLOUD) APP_AREA_2(VADELIA_CLOUD)
Configures the generation of messages relating to the environment and application areas APP_AREA_1 and APP_AREA_2, for the Visual Adelia Cloud type.
adelGenDebugMode (optional)
Specifies whether to generate objects in debug or release mode.
Setting the value Y forces generation in debug mode.
Setting the value N forces generation in release mode. If this parameter is not specified, the generation mode is deduced from the Adelia environment attributes (3GL Generation tab).
Also, the debug generation produces a XML file for each Adelia program needed for debugging the 4GL code. These files are grouped in a debug artifact. The container file of this artifact is in ZIP format. The table 5 describes in detail the name of each debug artifact produced.
adelGenIncremental (mandatory)
Defines the strategy used to generate Adelia objects when the build is executed. Two modes are possible:
Global mode: enabled by setting the value N.
Whenever a build is executed, all Adelia objects belonging to the specified application areas are generated.
Generation is forced even if an object has not been modified between two executions of a build.Incremental mode: enabled by setting the value Y.
Whenever a build is executed, only objects that have been modified since the previous build are regenerated.
If this mode is enabled the first time an application is built, all Adelia objects are generated (Global mode is applied).
It is preferable to use Incremental mode only when building snapshot (i.e. development) versions of artifacts, as this mode reduces the build execution time.
adelGenNbThreads (optional)
Numerical value defining the number of Adelia object generation jobs that can be executed concurrently.
If this parameter is not specified, it is calculated when the build is executed, based on the workstation's processing power (equal to the NUMBER_OF_PROCESSORS Windows system variable).
adelGenLogDir (optional)
Alphanumeric string (maximum of 250 characters) defining the path where the reports of each erroneous generation are kept. In this case, the overall build report no longer contains the erroneous generation reports, but it refers to the files generated in the directory indicated in adelGenLogDir.
This path may be absolute or relative to the directory containing the gradle.properties file.
If this parameter is not indicated, the overall build report contains the erroneous generation reports. ↑ Top of page
AS400 generation settings
The build process uses a number of specific parameters when Adelia generates AS400 objects.
These settings are optional, and should only be specified for AS400 generation operations.
adelGenAS400.as400Server.genLib
List of names of the AS400 libraries used to store the binary objects produced by AS400 generation of SAdelia programs and the server parts of Visual Adelia programs.
It is possible to distinguish between libraries for Adelia objects according to whether their visibility is public (repository level) or private (application area level).
The configuration syntax is as follows: visibility level (*REPOSITORY for public visibility, or Adelia application area name for private visibility), followed by the name of the AS400 library.
Example 1: adelGenAS400.as400Sever.genLib=*REPOSITORY LIB_PUBLIC
Defines the LIB_PUBLIC library as the library in which to store objects with public (environment level) visibility.
Example 2: adelGenAS400.as400Sever.genLib=*REPOSITORY LIB_PUBLIC, APP_AREA_1 LIBRARY_1, APP_AREA_2 LIBRARY_2
Defines the LIB_PUBLIC library as the library in which to store objects with public (environment level) visibility, LIBRARY_1 for objects with private visibility belonging to application area APP_AREA_1, and LIBRARY_2 for objects with private visibility belonging to application area APP_AREA_2.
adelGenAS400.as400Adelia.genLib
List of names of the AS400 libraries used to store the binary objects produced by AS400 generation of Interactive and Batch Adelia programs belonging to a particular application area.
It is possible to distinguish between libraries for Adelia objects according to whether their visibility is public (repository level) or private (application area level).
The configuration syntax is as follows: visibility level (*REPOSITORY for public visibility, or Adelia application area name for private visibility), followed by the name of the AS400 library.
Example 1: adelGenAS400.as400Adelia.genLib=*REPOSITORY LIB_PUBLIC
Defines the LIB_PUBLIC library as the library in which to store objects with public (environment level) visibility.
Example 2: adelGenAS400.as400Adelia.genLib=*REPOSITORY LIB_PUBLIC, APP_AREA_1 LIBRARY_1, APP_AREA_2 LIBRARY_2
Defines the LIB_PUBLIC library as the library in which to store objects with public (environment level) visibility, LIBRARY_1 for objects with private visibility belonging to application area APP_AREA_1, and LIBRARY_2 for objects with private visibility belonging to application area APP_AREA_2.
adelGenAS400.as400Server.versionOSSAVF
String identifying the OS400 version of the SAVF files produced when As400Server artifacts are created.
Possible values:
*CURRENT: indicates the version of OS400 installed on the computer used to create the SAVF file,
*PRV: indicates the previous version of OS400 installed on the computer used to create the SAVF file,
VxRxMx: indicates a version where Vx is the version number, Rx the release number and Mx the modification level (e.g.: V5R3M0).
If no value is specified, the version is set by the CRTSAVF command used to create the SAVF file.
adelGenAS400.as400Adelia.versionOSSAVF
String identifying the OS400 version of the SAVF files produced when As400Adelia artifacts are created.
Possible values:
*CURRENT: indicates the version of OS400 installed on the computer used to create the SAVF file,
*PRV: indicates the previous version of OS400 installed on the computer used to create the SAVF file,
VxRxMx: indicates a version where Vx is the version number, Rx the release number and Mx the modification level (e.g.: V5R3M0).
If no value is specified, the version is set by the CRTSAVF command used to create the SAVF file.
adelGenAS400.language
Configuring support for multilingual AS400 generation
This parameter can be used to define the library used to store the translated Adelia constants and error messages for each supported Adelia language.
It is possible to distinguish between libraries for error messages according to whether their visibility is public (repository level) or private (application area level).
The configuration syntax is as follows: Adelia language name followed by the visibility level (*REPOSITORY for public visibility, or Adelia application area name for private visibility) and AS400 library name (in square brackets).
Example 1: adelGenAS400.language=ENGLISH[*REPOSITORY LIB_EN_REP, APP_AREA_1 LIB_EN_1]
Sets the library LIB_EN_REP for storing objects with public (environment level) visibility and the library LIB_EN_1 for storing objects with private visibility relating to the application area APP_AREA_1, for the English language.
Example 2: adelGenAS400.language=ITALIAN[*REPOSITORY LIB_IT_REP, APP_AREA_1 LIB_IT_1], GERMAN[*REPOSITORY LIB_DE_REP, APP_AREA_2 LIB_DE_2]
Defines the libraries for the following Adelia languages: Italian and German. ↑ Top of page
Gradle settings
You can configure how the Gradle build is executed.
org.gradle.java.home (optional)
Defines the path leading to the Java JDK used to execute the Gradle build.
There is no need to specify this parameter if the JDK 8 installed on the workstation is referenced via the JAVA_HOME environment variable.
org.gradle.jvmargs (optional)
Defines the launch options of the JVM used to execute the Gradle build.
For more details, see https://docs.gradle.org/current/userguide/build_environment.html and https://docs.oracle.com/javase/8/docs/technotes/tools/windows/java.html.
org.gradle.daemon (mandatory)
Forces execution of a gradle build via a daemon process (see https://docs.gradle.org/current/userguide/gradle_daemon.html).
Using a daemon decreases the time required to launch a Gradle build.
As Administrator privileges are required in order to build Adelia components, you should ensure that Gradle daemons are started with Administrator privileges if you set this parameter to "true".
javaCompile.compileOptions.forkOptions.memoryInitialSize (optional)
Defines the initial memory allocation when the Java source file compilation process is started.
javaCompile.compileOptions.forkOptions.memoryMaximumSize (optional)
Defines the maximum memory allocation during execution of the Java source file compilation process. ↑ Top of page
Repository manager settings
When executing an Adelia build, the artifact repositories are used during the following phases:
In the source compilation / resource transformation phase, the build process uses a repository (the download repository) to download the necessary system artifacts enabling the application's artifacts to be built,
In the final phase during which the built artifacts are stored, it is possible to define a repository (the upload repository) to use when transferring these versioned artifacts. Depending on the version type (i.e. release or snapshot), the related repository can be defined.
downloadArtifactsRepo (mandatory)
URL of the download repository for the dependent artifacts required for the build.
By default, the repository is provided by Hardis. We strongly recommend defining your own private repository instead, configuring it as a proxy for the Hardis repository.
This URL appears in the "Repository path" field associated with the download repository listed in the Nexus "Repositories" view (see Continuous integration architecture prerequisites).
downloadArtifactsRepo.username / downloadArtifactsRepo.password (optional)
Defines the user profile and password used to log in to the download repository.
By default, these login details are those used for the Hardis download repository, but we strongly recommend replacing them with the login details for your own private repository (cf. downloadArtifactsRepo above).
As this repository is accessed in read only mode, Nexus allows anonymous connections. If you want to allow anonymous connections, leave the "username" and "password" fields blank.
uploadArchivesReleaseRepo (optional)
URL of the upload repository used to store artifacts built with a release version.
This repository will be used to provide the final version of artifacts (see Continuous integration architecture prerequisites).
uploadArchivesReleaseRepo.username / uploadArchivesReleaseRepo.password (optional)
Defines the user profile and password used to log in to the upload repository for the release version of artifacts.
By default, Nexus allows the use of the Deployment profile (with the username and password values both set to "deployment").
uploadArchivesSnapshotRepo (optional)
URL of the upload repository used to store artifacts built with a snapshot version.
This repository will be used to provide artifacts during the development process (see Continuous integration architecture prerequisites).
uploadArchivesSnapshotRepo.username / uploadArchivesSnapshotRepo.password (optional)
Defines the user profile and password used to log in to the upload repository for the snapshot version of artifacts.
By default, Nexus allows the use of the Deployment profile (with the username and password values both set to "deployment").