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 -PadelCompoSetName=XXX adelCompoSetCreate , 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 adelCompoSetSettings.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
adelCompoSetName (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.
adelLstComponents (mandatory)
List of Adelia software components to build.
The components need to have been created previously by the build component manager.
The names must be entered onto a single line and separated by at least a space character.
For a component depending on one (or more) other component(s): when the user wants to build an A component which is dependent on other components (B and C), there are two options:
- Add B and C to the list of components to build (adelLstComponents=A B C).
These three components will be built in the same build and the generated artifacts will all have the same version. - Do not add B and C to the list of components to build (adelLstComponents=A).
In this case, the build process requires components B and C to have been built beforehand and made available in the download repository. If this is not the case, the build process will fail.
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
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.
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 connection parameters
Unlike the Adelia application area-based build, which uses the AS400 connection information entered in the Adelia environment (or application area) parameters, the component-based build process uses its own connection parameters.
These parameters are optional and only need to be entered in the case of AS400 generation.
adelGenAS400.as400Server.hostName
Alias name or IP address of the physical AS400 machine used to generate SAdelia programs and server parts of Visual Adelia programs.
adelGenAS400.as400Adelia.hostName
Alias name or IP address of the physical AS400 machine used to generate Adelia Interactive and Batch programs.
adelGenAS400.as400Server.port
Adelia daemon listening port started on the AS400 used to generate SAdelia programs and server parts of Visual Adelia programs.
adelGenAS400.as400Adelia.port
Adelia daemon listening port started on the AS400 used to generate Adelia Interactive and Batch programs.
adelGenAS400.as400Server.username
AS400 profile used to connect to the AS400 used to generate SAdelia programs and server parts of Visual Adelia programs.
adelGenAS400.as400Adelia.username
AS400 profile used to connect to the AS400 used to generate Adelia Interactive and Batch programs.
adelGenAS400.as400Server.password
AS400 password associated with the user profile used to connect to the AS400 used to generate SAdelia programs and server parts of Visual Adelia programs.
adelGenAS400.as400Adelia.password
AS400 password associated with the user profile used to generate Adelia Interactive and Batch programs.
adelGenAS400.as400Server.encryptedPassword
Defines whether or not the adelGenAS400.as400Server.password value is encrypted.
The Y value indicates that the password is encrypted.
The N value (default value) indicates that the password is unencrypted.
There are two options for encrypting the password:
- Create an interactive Visual Adelia program using the VaToolBx function "VaToolBxEncryptAdeliaPassword",
- Use the middleware server configuration utility by creating a profile with the password and find it encrypted in the mwserver.ini file.
adelGenAS400.as400Adelia.encryptedPassword
Defines whether or not the adelGenAS400.as400Adelia.password value is encrypted.
The Y value indicates that the password is encrypted.
The N value (default value) indicates that the password is unencrypted.
There are two options for encrypting the password:
- Create an interactive Visual Adelia program using the VaToolBx function "VaToolBxEncryptAdeliaPassword",
- Use the middleware server configuration utility by creating a profile with the password and find it encrypted in the mwserver.ini file.
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.jobdName
Name of the JOBD used for compilation work on the AS400 of SAdelia programs and server parts of Visual Adelia programs.
adelGenAS400.as400Adelia.jobdName
Name of the JOBD used for compilation work on the AS400 of Adelia Interactive and Batch programs.
adelGenAS400.as400Server.jobdLib
Name of the library containing the JOBD used for compilation work on the AS400 of SAdelia programs and server parts of Visual Adelia programs.
adelGenAS400.as400Adelia.jobdLib
Name of the library containing the JOBD used for compilation work on the AS400 of Adelia Interactive and Batch programs.
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.
When a component to be built (present in adelLstComponents) contains SAdelia programs and/or server parts of Visual Adelia programs, it needs to have an AS400 library associated with it.
The configuration syntax is as follows: component name, followed by the name of the AS400 library.
Example 1: adelGenAS400.as400Server.genLib=COMPO_ONE LIB_ONE
Defines the LIB_ONE library as storage for AS400 objects from the AS400 generation of Adelia objects present in the COMPO_ONE component.
Example 2: adelGenAS400.as400Server.genLib=COMPO_ONE LIB_ONE, COMPO_TWO LIB_TWO, COMPO_THREE LIB_THREE
Defines the libraries:
- LIB_ONE as storage for AS400 objects from the AS400 generation of Adelia objects present in the COMPO_ONE component.
- LIB_TWO as storage for AS400 objects from the AS400 generation of Adelia objects present in the COMPO_TWO component and
- LIB_THREE as storage for AS400 objects from the AS400 generation of Adelia objects present in the COMPO_THREE component.
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.
When a component to be built (present in adelLstComponents) contains Adelia Interactive and/or Batch programs, it needs to have an AS400 library associated with it.
The configuration syntax is as follows: component name, followed by the name of the AS400 library.
The two names must be separated by a space. When declaring several component/library pairs, separate each pair with a comma ",".
Example 1: adelGenAS400.as400Adelia.genLib=COMPO_ONE LIB_ONE
Defines the LIB_ONE library as storage for AS400 objects from the 400 generation of Adelia objects present in the COMPO_ONE component.
Example 2: adelGenAS400.as400Adelia.genLib COMPO_ONE LIB_ONE, COMPO_TWO LIB_TWO, COMPO_THREE LIB_THREE.
Defines the libraries:
- LIB_ONE as storage for AS400 objects from the 400 generation of Adelia objects present in the COMPO_ONE component.
- LIB_TWO as storage for AS400 objects from the 400 generation of Adelia objects present in the COMPO_TWO component and
- LIB_THREE as storage for AS400 objects from the 400 generation of Adelia objects present in the COMPO_THREE component.
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.
When a component to be built (present in adelLstComponents) contains multi-language programs and/or error messages, it needs to have an AS400 library associated with it.
The configuration syntax is as follows: Adelia language name followed by the component name/AS400 library name pair (in square brackets).
Example 1: adelGenAS400.language=ENGLISH[COMPO_ONE LIB_EN_ONE, COMPO_TWO LIB_EN_TWO]
Defines for the English language:
- The LIB_EN_ONE library as storage for AS400 objects from the AS400 generation of Adelia objects present in the COMPO_ONE component and
- The LIB_EN_TWO library as storage for AS400 objects from the AS400 generation of Adelia objects present in the COMPO_TWO component.
Example 2: adelGenAS400.language=ITALIAN[COMPO_ONE LIB_IT_ONE, COMPO_TWO LIB_IT_TWO], GERMAN[COMPO_ONE LIB_DE_ONE, COMPO_TWO LIB_DE_TWO]
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 uses a repository (download repository) to download the system artifacts required to build the application artifacts.
In addition, when building dependent components (the dependencies of which are not to be built explicitly), a repository can be used to download the dependency component artifacts.
By default, this repository is the one used in the built artifact storage phase (see below).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.
downloadCompoArtifactsReleaseRepo (optional)
Access URL to the download repository for dependency component artifacts required for dependent component build in the release version.
This repository is only used if these artifacts are not among the components to build.
By default, if the value is not entered, this repository is the one defined by the user via the uploadArchivesReleaseRepo key.
downloadCompoArtifactsReleaseRepo.username / downloadCompoArtifactsReleaseRepo.password (optional)
Defines the user profile and password used to connect to the download repository for dependency component artifacts required for the dependent component build in the release version.
By default, if these keys are not entered, their values are those defined by the user for the uploadArchivesReleaseRepo.username and uploadArchivesReleaseRepo.password keys.
By default, Nexus enables the deployment profile (username and password set to the "deployment" value) to be used.
downloadCompoArtifactsSnapshotRepo (optional)
Access URL to the download repository for dependency component artifacts required for the dependent component build in the snapshot version.
This repository is only used if these artifacts are not among the components to build.
By default, if the value is not entered, this repository is the one defined by the user via the uploadArchivesSnapshotRepo key.
downloadCompoArtifactsSnapshotRepo.username / downloadCompoArtifactsSnapshotRepo.password (optionnal)
Defines the user profile and password used to connect to the download repository for dependency component artifacts required for the dependent component build in the snapshot version.
By default, if these keys are not entered, their values are those defined by the user for the uploadArchivesSnapshotRepo.username and uploadArchivesSnapshotRepo.password keys.
By default, Nexus enables the deployment profile (username and password set to the "deployment" value) to be used.
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").