Developing gCube Maven Components
From Gcube Wiki
Revision as of 15:38, 18 July 2012 by Gabriele.giammatteo (Talk | contribs)
Contents
Common
We assume familiarity with Maven concepts and terminology and notice that Maven components for gCube must satisfy the following requirements:
- their
groupId
must be of the following form:
org.gcube.<class>
- where class identifies a functionally correlated set of components and helps a range of users (developers, administrator) to discover components in various UIs/reports used within the system and in tools. Logically, the class corresponds to the gCube class of the component's, as specified in its gCube Software Profile. However, more specific, or else cross-class groups may be agreed upon among developers. In all cases, the group should align with official Maven guidelines. By agreement, for example, components in gCube class
DataAccess
declare agroupId
oforg.gcube.data.access
and those in gCube classDataTransfer
declare agroupId
oforg.gcube.data.transfer
. On the other hand, also by agreement, components in gCube classInformationSystem
declare agroupId
oforg.gcube.informationsystem
.
- their
artifactId
must follow Maven conventions (e.g. avoid capital letters or punctuation other than hyphens).
- they must inherit from maven-parent. This ensure and promotes compliance with project-wide requirements, from the enforcement of minimal Java and Maven versions to generation and packaging of Javadoc documentation and component sources;
- for each deployable artefact they produce (primary or secondary), they must include the Maven coordinates of the arteact in the corresponding package section of the gCube Software Profile. Specifying package dependencies in the Software Profile, on the other hand, is no longer required;
- whenever they are associated with a gCube Software Archive (SA), they must produce it as a secondary
tar.gz
artefact with classifierservicearchive
. Note that the SA of Maven components does not need to include Javadoc documentation (as this documentation is produced and published directly as a Maven artefact);