Webapp Plugin
This plugin allows you to build a web application for your project. This conforms to the JEE specification for web applications. This plugin has a number of settings that control how it behaves. In most cases, the defaults work fine. The features of the plugin are also the public methods of the plugin class, so you can refer to the Groovy Doc for more information.
LATEST VERSION: 2.0.0
Loading the plugin
Here is how you load this plugin:
webapp = loadPlugin(id: "org.savantbuild.plugin:webapp:2.0.0")
Layout
By default, this plugin uses this layout to set up Tomcat.
project
|- web <- You project's web application directory
| |- WEB-INF
| | |- classes <- Often when configuration files are placed
| | |- lib <- Where the project dependencies and JAR files are placed
Settings
This plugin has a number of settings that control how it behaves. These settings are:
Cleaning WEB-INF/classes
By default, the plugin doesn’t clean up the WEB-INF/classes directory. You can place configuration files in that directory, and the plugin will leave them there. However, some projects prefer to store configuration files outside the web application directory and copy them into the web application during the build. To force the plugin to clean the WEB-INF/classes directory, you can set the cleanClassesDirectory field on the settings object. Here is an example of setting this:
webapp.settings.cleanClassesDirectory = true
Copying web resources
If you enable cleaning of the WEB-INF/classes directory and want to store your web resources outside the web application, you can use the copyResources and webResourceDirectory fields on the settings class. These fields control the location of the web resources and if they are copied to the web application during the build. Here is an example of setting these:
webapp.settings.copyResources = true
webapp.settings.webResourceDirectory = Paths.get("src/main/web")
Project JARs
In most cases, you need to copy the JAR file for your project into the WEB-INF/lib directory. To do this, the plugin needs to know where the JAR is located. The jarOutputDirectory specifies where the project JAR files are located. Here is an example of setting this:
webapp.settings.jarOutputDirectory = Paths.get("output/jars")
Web directory
Some projects use a different web application directory other than web. You can change the location of the web application in your project by setting the webDirectory field on the settings object. Here is an example of setting this:
webapp.settings.webDirectory = Paths.get("webapp")
WAR output directory
The directory where the WAR file is created. This defaults to build/wars:
webapp.settings.warOutputDirectory = Paths.get("build/wars")
Dependencies
This plugin will copy the project dependencies into the WEB-INF/lib directory. You can control the dependencies that are copied by setting the dependencies field on the settings object. Here is an example of setting this:
webapp.settings.dependencies = [
[group: "compile", transitive: true, fetchSource: false, transitiveGroups: ["compile", "runtime"]],
[group: "runtime", transitive: true, fetchSource: false, transitiveGroups: ["compile", "runtime"]]
]
This is the default setting for this property. It specifies that only the compile and runtime dependency groups should be copied along with all of their transitive dependencies in the same groups. If you want to change the dependency definitions, here are the attributes you can use:
| name | description | type | required |
|---|---|---|---|
| group | The dependency group to include | String | true |
| transitive | Determines if transitive dependencies are included or not | boolean | true |
| fetchSource | Determines if the source for the dependencies or downloaded or not | boolean | true |
| transitiveGroups | The transitive dependency groups to fetch. This is only used if transitive is set to true | List<String> | false |
Building the web application
To build the web application in your project, call the build method like this:
webapp.build()
Cleaning the web application
To clean out the dependency JAR files and configuration files from the web application in your project, call the clean method like this:
webapp.clean()
WAR
To build a WAR from your web application directory, call the war method like this:
webapp.war()