A.1. app-component.xml
app-component.xml
file is required for using the current application as a component of another application. The file defines the dependencies on other components, describes the existing application modules, generated artifacts and exposed application properties.
The app-component.xml
file should be located in a package, specified in the App-Component-Id
entry of the global module JAR manifest. This manifest entry allows the build system to find components for a project in the build class path. As a result, in order to use some component in your project, just define the component’s global artifact coordinates in the dependencies/appComponent
items of your build.gradle.
By convention, the app-component.xml
is located in the root package of the project (defined in metadata.xml) which is also equal to the projects’s artifact group (defined in build.gradle):
App-Component-Id == root-package == cuba.artifact.group == e.g. 'com.company.sample'
Use CUBA Studio to generate the app-component.xml
descriptor and the manifest entries for the current project automatically.
- Using 3rd party dependencies as appJars:
-
If you want the component’s 3rd party dependencies to be deployed with your application module’s artifacts (e.g.
app-comp-core
orapp-comp-web
) into thetomcat/webapps/app[-core]/WEB-INF/lib/
folder, you should add these dependencies as appJar libraries:<module blocks="core" dependsOn="global,jm" name="core"> <artifact appJar="true" name="cuba-jm-core"/> <artifact classifier="db" configuration="dbscripts" ext="zip" name="cuba-jm-core"/> <!-- Specify only the artifact name for your appJar 3rd party library --> <artifact name="javamelody-core" appJar="true" library="true"/> </module>
If you don’t want to use a project as an app component, you should add such dependencies as appJars to the deploy task of your
build.gradle
:configure(coreModule) { //... task deploy(dependsOn: assemble, type: CubaDeployment) { appName = 'app-core' appJars('app-global', 'app-core', 'javamelody-core') } //... }