Difference between revisions of "GCube Project Layout"
From Gcube Wiki
Manuele.simi (Talk | contribs) (→File Templates) |
Manuele.simi (Talk | contribs) (→Project Layout Explained) |
||
Line 49: | Line 49: | ||
|- | |- | ||
| gcube/extra-resources/WEB-INF/ | | gcube/extra-resources/WEB-INF/ | ||
− | | additional resources to add to the WEB-INF dir in the output jar/war. These resources are filtered | + | | additional resources to add to the WEB-INF dir in the output jar/war. These resources are filtered(*) |
|- | |- | ||
| gcube/extra-resources/META-INF/ | | gcube/extra-resources/META-INF/ | ||
− | | additional resources to add to the META-INF dir in the output jar/war. These resources are filtered | + | | additional resources to add to the META-INF dir in the output jar/war. These resources are filtered(*) |
|- | |- | ||
| CHANGELOG.md | | CHANGELOG.md | ||
Line 66: | Line 66: | ||
| sponsors and funding options for the project | | 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 independent distributed unit of software. | '''Note''': if the project is composed by multiple maven modules, the layout above is repeated for each module, because the module is an independent distributed unit of software. |
Revision as of 15:59, 26 July 2020
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 a 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 independent 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