Skip to content

The parent pom.xml for POMS projects. Also some documentation about about the whole ecosystem.

License

Notifications You must be signed in to change notification settings

npo-poms/poms-parent

Repository files navigation

The POMS ecosystem

Build Status Maven Central snapshots

This is the poms parent. This is the parent pom of the several projects in the poms ('Publieke Omroep Media Services') ecosystem, which are used by Dutch public broadcasters.

We use the pom.xml of this project to synchronize versions of dependencies.

This README serves as a general description of the different systems that this envolves

We’re available at slack.

Documentation is maintained at wiki of VPRO (needs password, and your ip in proper range)

Deployments

This describes schematically the connections between actual systems relevant to poms.

This does not intend to be exhaustive, but merely tries to sketch the big picture. Especially the part 'World' contains mainly examples. poms deployment

Dependencies

This describes schematically the dependencies between the several modules relevant to poms.

This does not intend to be exhaustive, but merely tries to sketch the big picture.

An important aspect is that dependencies may only be one way and non-circular. Often dependencies are both transitive and direct, of which only examples are indicated.

poms dependencies

source code repositories

The artifacts in 'sharable utilities' are available on maven central and their source code is available on github. Thich makes them useable also by other parties then VPRO

The image is clickable and links to several version control repositories.

The azure blocks we consider part of the 'poms ecosystem'. The ones with blue links are open source, and point to public repositories. The green links point to private repositories.

The pom.xmls of this project

This github project provides three pom.xmls, which extends from each other. They are all the type 'pom', and are meant to be imported or serve as 'parent' for other pom.xmls.

  • nl.vpro.poms:poms-bom Can be imported in other pom.xmls that are not part of poms itself. It manages the version of all artifacts that are related to poms and relatative

  • nl.vpro.poms:poms-parent Is the parent pom of all poms projects. Extends from poms-bom, but manages all versions of used libraries.

  • nl.vpro.poms:poms-parent-private Is the parent pom of all private poms projects (that live in gitlab). Extends from poms-parent, but adds configuration for gitlab as a maven repository

Operations and development

Configuration files and context root

For every deployable we indicate: The URL in test/acc and production The port and application context we suggest for development. Configure your application like this, and you would have minimal configuration to do to get things up and running on your development machine.

The configuration file that is automatically included, and we suggest for development. We suggest that you maintain configuration you need for development in this file.

We often support a setting like this: env=[prod|acc|test|localhost] to automatically switch between several setting which vary between environments predictably.

project url configuration file recommended port and context during development

Functional Tests

${user.home}/conf/npo-functional-tests.properties

-

GUI

https://poms[|-acc|-test].omroep.nl/

${user.home}/conf/media.properties

8071

Backend

https://api[|-acc|-test].poms.omroep.nl/

${user.home}/conf/media-rs.properties

8071/rs

Frontend API

https://rs[|-acc|-test].poms.omroep.nl/v1

${user.home}/conf/npo-api.properties

8070/v1

Page publisher API

https://publish[|-acc|-test].pages.omroep.nl/v1

${user.home}/conf/page-publish.properties

8069

Publisher

-

${user.home}/conf/npo-publisher.properties

-

Images Frontend

https://images[|-acc|-test].poms.omroep.nl/

${user.home}/conf/images-frontend.properties

8072

Images Backend

https://poms[|-acc|-test].omroep.nl/images

${user.home}/conf/images.properties

8071/images

Projects

GUI and Backend RestServices

Currently, the POMS GUI and the POMS Backend API are maintained as one project with two artifacts. They can be run in one tomcat, but on openshift they are in separate tomcat deployments. The API is even deployed redundantly.

Frontend API

Page publisher API

Publisher API

NPO API Clients

This project provides java clients for the above projects.

VPRO shared

Most projects also depend on a collection of utilities maintained by VPRO but which are not specific for POMS or its subsystems. See https://github.com/vpro/vpro-shared

POMS shared

These modules are specific for POMS, and most noticeably contain the domain classes shared by most projects, like the 'domain' objects and services. See https://github.com/npo-poms/poms-shared

Classes from this may also end up outside the POMS projects themselves. Like e.g. CMS’s (probably via the api clients)

Backend utilities

Sometimes different POMS project share 'backend' code, like repository implementations. These need never be exposed to the outside world.

User backend

This contains the code to talk to keycloak to acquire user roles/groups

Rights

The rights matrix of the POMs GUI can be found here