Maven Project Setup
By INN and APP Provided Maven Parents
There exist four types of parents that can be used. They differ in the type of classifiers that are released with the product.
csco-parent
This parent should not be used for java projects.
Provides information about INN managed artifactory and java toolchain.
<parent>
<groupId>de.gsi.cs.co</groupId>
<artifactId>csco-parent</artifactId>
<version>17.0.3</version>
</parent>
Properties that can be overridden and are used also by extending parents:
<!-- the git organization of your project -->
<git.organization>buildsystem-common</git.organization>
csco-parent-maven
This parent defines maven plugin versions and basic configurations.
More information can be found
here.
acoapp-third-party-bom
This parent provides dependency management for commonly used 3rd party dependencies (e.g. Spring, JUnit, ...).
csco-parent-java
This parent should be used for java libraries and applications.
Creates a JAR, JavaDoc and Sources and deploys it.
It can also create bundle zips, to do so please provide the file
.mvn/build.bundle
.
<parent>
<groupId>de.gsi.cs.co</groupId>
<artifactId>csco-parent-java</artifactId>
<version>18.0.1</version>
</parent>
Project structure of a project that uses this parent:
.
|-- pom.xml
|
|-- .mvn (optional)
| ` build.bundle
|
`-- src
|-- main
| |-- java
| `-- resources
|
|-- test
| `-- java
|
`-- site (optional)
`-- markdown
`-- index.md (defining the content of the "About" site)
Properties that can be overridden and are used also by extending parents:
<!-- all properties from csco-parent can also be overridden -->
<!-- Adjust this to point to your GIT repository where you want to share the project -->
<git.organization>fcc-applications</git.organization>
<!-- Adjust this to point to the path under websvc[dev|pro] (WebDAV) where you want to share the documentation -->
<docu.path>groups/fcc/docu/${project.artifactId}/${project.version}/</docu.path>
<maven.site.skip>false</maven.site.skip> <!-- set to true if you don't want a site generation on deploy -->
<!-- property to remove INDEX.LIST files -->
<bundle.keepIndexList>false</bundle.keepIndexList>
<!-- config urls used for loading properties -->
<config.url.cscoap.dev>http://config.development.lb.a.k8s.acc.gsi.de/application/profile/dev/</config.url.cscoap.dev>
<config.url.cscoap.int>http://vmla004.acc.gsi.de:58080/application/profile/int/</config.url.cscoap.int>
<config.url.cscoap.pro>http://asl156.acc.gsi.de:58080/application/profile/pro/</config.url.cscoap.pro>
<!-- Adjust this to point to your main class -->
<bundle.mainClass>please.set.the.bundle.properties</bundle.mainClass>
<!-- properties to replace config urls -->
<config.url.dev>${config.url.cscoap.dev}</config.url.dev>
<config.url.int>${config.url.cscoap.int}</config.url.int>
<config.url.pro>${config.url.cscoap.pro}</config.url.pro>
<!-- properties to replace log4j urls -->
<config.log4j.dev>log4j2-dev.xml</config.log4j.dev>
<config.log4j.int>log4j2-int.xml</config.log4j.int>
<config.log4j.pro>log4j2-pro.xml</config.log4j.pro>
More information can be found
here.
Common dependencies
lsa-client-gsi
This artifact provides access to the lsa system, it can be used inside services and does not have any UI dependencies.
<dependency>
<groupId>de.gsi.lsa.core</groupId>
<artifactId>lsa-client-gsi</artifactId>
<version>18.0.0</version>
</dependency>
common-uilib
This artifact is used for all projects above lsa-client-gsi that have a UI.
For Fx:
<dependency>
<groupId>de.gsi.fcc.applications</groupId>
<artifactId>common-uilib-fx</artifactId>
<version>18.0.0</version>
</dependency>
For Swing:
<dependency>
<groupId>de.gsi.fcc.applications</groupId>
<artifactId>common-uilib-swing</artifactId>
<version>18.0.0</version>
</dependency>