An open API service indexing awesome lists of open source software.

https://github.com/spotify/foss-root

Maven POM that serves as a parent for Spotify FOSS projects
https://github.com/spotify/foss-root

java maven-pom

Last synced: 6 months ago
JSON representation

Maven POM that serves as a parent for Spotify FOSS projects

Awesome Lists containing this project

README

          

# foss-root

![Build status](https://github.com/spotify/foss-root/actions/workflows/maven.yml/badge.svg)
[![Maven Central](https://maven-badges.herokuapp.com/maven-central/com.spotify/foss-root/badge.svg)](https://maven-badges.herokuapp.com/maven-central/com.spotify/foss-root)
![Lifecycle](https://img.shields.io/badge/lifecycle-production-1ed760.svg)

A root pom for configuring common release related plugins for open source maven projects.

## Usage

There's still some boilerplate that has to go into your project `pom.xml`. Use the template below.

```xml


com.spotify
foss-root
LATEST-VERSION

YOUR_ARTIFACT_NAME
VERSION-SNAPSHOT



The Apache Software License, Version 2.0
http://www.apache.org/licenses/LICENSE-2.0.txt
repo



...


https://github.com/spotify/YOUR_REPO
scm:git:git@github.com:spotify/YOUR_REPO.git
scm:git:git@github.com:spotify/YOUR_REPO.git
HEAD




maven-checkstyle-plugin


maven-enforcer-plugin


maven-failsafe-plugin


```

By default your project will target Java 8. If you don't need Java 8 compatibility and you would like to target a later version of Java, set the
`java.version` property in your project, like so:

```xml

11

```

After setting this up, you'll be able to

#### add license headers to all sources

```
mvn license:update-file-header
```

#### deploy snapshots

```
mvn deploy
```

#### deploy releases

```
mvn release:prepare
mvn release:perform
```

#### Fail if no tests

By default, from version 16+ any project using `foss-root` will fail if there are not unit-tests.

You can override this behaviour by setting the property `unitTests.failIfNoTests` equal to `false`.

An equivalent `integrationTests.failIfNoTests` exists, but its default is set to `false`.