Skip to content

moditect/moditect-org-parent

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

46 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

moditect-org-parent

Build Status Download


Parent POM for all Maven based ModiTect projects.

Profiles

The parent POM enables the following profiles on itself and its children:

  • publication: generates sources and javadoc JARs.

  • gpg: signs all attached artifacts.

  • local-deploy: deploys all artifacts to a target directory defined by ${local.repository.path}

The parent POM enables the following profiles on itself alone:

  • jreleaser: creates a GitHub release with changelog.

Requirements

Children projects must define values for the following properties

Given a project named foo located at moditect/foo:

<properties>
    <project.identifier>foo</project.identifier>
    <project.github.repository>moditect/foo</project.github.repository>
    <java.version>1.8</java.version>
    <maven.compiler.source>1.8</maven.compiler.source>
    <maven.compiler.target>1.8</maven.compiler.target>
</properties>

Constraints

The <scm> block must be defined explicitly at the root of the child project, otherwise the URLs will be set to the wrong paths. Given a project named foo located at moditect/foo:

<scm>
    <connection>scm:git:${repository.url}</connection>
    <developerConnection>scm:git:${repository.url}</developerConnection>
    <url>${repository.url}</url>
    <tag>HEAD</tag>
</scm>

The license-maven-plugin must be defined at the root of the child in order to find the license header template at the right location

<plugin>
    <groupId>com.mycila</groupId>
    <artifactId>license-maven-plugin</artifactId>
    <configuration combine.self="override">
        <header>${maven.multiModuleProjectDirectory}/etc/license.txt</header>
        <strictCheck>true</strictCheck>
        <excludes>
            <exclude>README.md</exclude>
            <exclude>LICENSE.txt</exclude>
            <exclude>mvnw</exclude>
            <exclude>mvnw.cmd</exclude>
            <exclude>.mvn/wrapper/maven-wrapper.properties</exclude>
            <exclude>.mvn/wrapper/MavenWrapperDownloader.java</exclude>
            <exclude>...</exclude>
        </excludes>
    </configuration>
</plugin>

Format license headers by invoking

$ mvn initialize license:format

Release

Releases are triggered by using the Release workflow which updates the version number, creates the tag, and pushes the new tag.