GCube Project Layout

From Gcube Wiki
Revision as of 04:56, 27 July 2020 by Manuele.simi (Talk | contribs) (Project Layout Explained)

Jump to: navigation, search

Standard Project Layout

gCube projects for software components are primarily developed with the Java language using Maven as build automation tool. The layout of a project mostly reflects the common conventions used for Maven with some variations.

- project folder/
  |-pom.xml
  |-src/
     |-main/
        |-java/
        |-webapp/
        |-resources/
     |-test/
        |-java/
        |-resources/
  |-gcube/
     |-extra-resources
        |-WEB-INF/
        |-META-INF/  
  |-CHANGELOG.md
  |-LICENSE.md
  |-README.md
  |-FUNDING.md

Project Layout Explained

File or Directory Role
pom.xml an XML file that contains information about the project and configuration details used by Maven to build the project
src/main/java/ application source code
src/main/webapp/ web application source code
src/main/resources/ resources packaged at root level in the output jar/war
src/test/java/ source code for tests
src/test/resources/ resources available on the test classpath
gcube/extra-resources/WEB-INF/ additional resources to add to the WEB-INF dir in the output jar/war. These resources are filtered(*)
gcube/extra-resources/META-INF/ additional resources to add to the META-INF dir in the output jar/war. These resources are filtered(*)
CHANGELOG.md a curated, chronologically ordered list of notable changes for each version of the project
LICENSE.md project's license
README.md a quick and simple way for other users to learn more about the project and how to use it
FUNDING.md sponsors and funding options for the project

(*) For an explanation of filtering see https://maven.apache.org/plugins/maven-resources-plugin/examples/filter.html.

Note: if the project is composed by multiple maven modules, the layout above is repeated for each module, because the module is an independently distributed unit of software.

File Templates

File MANIFEST.MF

A manifest file is automatically created and added to the META-INF folder of the output jar/war.

This example shows an instance of the content for the manifest:

Manifest-Version: 1.0
SCM-Revision-URL: https://code-repo.d4science.org/gCubeSystem/gx-rest/commit/8948534883a3b0998bb4487f12965122d22863af
Implementation-Title: gCube eXtensions to JAX-RS
Implementation-Version: 1.1.3
SCM-Revision: 8948534883a3b0998bb4487f12965122d22863af
Specification-Title: gCube eXtensions to JAX-RS
Build-Time: 20200725-203436
Build-Jdk-Spec: 1.8
Created-By: Maven Archiver 3.4.0
Specification-Version: 1.1
SCM-Branch: master