6.3.1. Structure of build.gradle
This section describes the structure and main elements of the build.gradle
script.
- buildscript
-
The
buildscript
section of the script defines the following:-
A version of the platform.
-
A set of repositories for loading project dependencies. See how to configure access to the repositories below.
-
Dependencies used by the build system, including the CUBA Gradle plugin.
Below the
buildscript
section, a few variables are defined. They are used in the script later. -
- cuba
-
The CUBA-specific build logic is encapsulated in the
cuba
Gradle plugin. It is included in the root of the script and in theconfigure
section of all modules by the following statement:apply(plugin: 'cuba')
The settings of the cuba plugin are defined in
cuba
section:cuba { artifact { group = 'com.company.sales' version = '0.1' isSnapshot = true } tomcat { dir = "$project.rootDir/build/tomcat" } ide { copyright = '...' classComment = '...' vcs = 'Git' } }
Let us consider the available options:
-
artifact
- this section defines the group and version of the project artifacts being built. Artifact names are based on module names specified insettings.gradle
.-
group
- artifact group. -
version
- artifact version. -
isSnapshot
- iftrue
, artifact names will have theSNAPSHOT
suffix.You can override the artifact version from the command line, for example:
gradle assemble -Pcuba.artifact.version=1.1.1
-
-
tomcat
- this section defines the settings of the Tomcat server which is used for fast deployment.-
dir
- location of the Tomcat installation directory. -
port
- listening port; 8080 by default. -
debugPort
- Java debug listening port; 8787 by default. -
shutdownPort
- port listening to theSHUTDOWN
command; 8005 by default. -
ajpPort
- AJP connector port; 8009 by default.
-
-
ide
- this section contains instructions for Studio and IDE.-
vcs
- a version control system for the project. OnlyGit
andsvn
are currently supported. -
copyright
- copyright text to be inserted into beginning of each source file. -
classComment
- comment text to be placed above class declarations in Java source files.
-
-
uploadRepository
- this section defines the settings of the repository where assembled project artifacts will be uploaded to upon completion of theuploadArchives
task.-
url
- the repository URL. If not specified, Haulmont’s repository is used. -
user
- the repository user. -
password
- the repository password.You can pass the upload repository parameters from the command line with the following arguments:
gradlew uploadArchives -PuploadUrl=http://myrepo.com/content/repositories/snapshots -PuploadUser=me -PuploadPassword=mypassword
-
-
- dependencies
-
This section contains a set of application components used by the project. Components are specified by their global module artifact. In the following example, three components are used:
com.haulmont.cuba
(cuba component of the platform),com.haulmont.reports
(reports premium add-on) andcom.company.base
(a custom component):dependencies { appComponent("com.haulmont.cuba:cuba-global:$cubaVersion") appComponent("com.haulmont.reports:reports-global:$cubaVersion") appComponent("com.company.base:base-global:0.1-SNAPSHOT") }
- configure
-
The
configure
sections contain configuration of modules. The most important part of the configuration is the declaration of dependencies. For example:configure(coreModule) { dependencies { // standard dependencies using variables defined in the script above compile(globalModule) provided(servletApi) jdbc(hsql) testRuntime(hsql) // add a custom repository-based dependency compile('com.company.foo:foo:1.0.0') // add a custom file-based dependency compile(files("${rootProject.projectDir}/lib/my-library-0.1.jar")) // add all JAR files in the directory to dependencies compile(fileTree(dir: 'libs', include: ['*.jar'])) }
Non-standard module dependencies can be specified in Studio on the Project properties > Advanced tab. See Studio context help for details.