InfrastructureBuilder minimal parent. This parent is the root for (nearly all) IB projects. It contains the dependency management and config for building most of the artifacts within the IB system.
PRIOR TO RELEASE EXECUTE THE FOLLOWING (takes a while) : mvn clean install invoker:run verify
The IB projects are all designed to work with the latest version of Maven. A secondary goal is working with the latest LTS of Java. We realize that this can make life difficult for some, but backwards-compatibility is more than a little difficult to manage with such a small team. So we don't.
This project has an enforcer plugin element that uses ${enforcer.maven.version}
which is set to the POM's current ${maven.version}
(which is nearly always the latest version when this POM was released). If you want, you can override ${enforcer.maven.version}
with a -Denforcer.maven.version=3.3.3
or whatever, but it is not guaranteed that other parts of IB will work with that version.
Please ensure your Maven builds have a good .gitignore
This is the IB "standard" (which we really need to propagate through the system)
.*
!.gitignore
target
*.iml
pom.xml.*
release.properties
/bin
To release within this tree, you must have a profile called gpgsigning
in your settings.xml
By default, all InfrastructureBuilder repos are:
- In GitHub under the
infrastructurebuilder
org - Named directly after the root artifact.
- This might mess you up when it builds the
<scm>
sections - You have several options, like
1. doing the work below
or
1. just setting<scm>
directly in every project.
To use this (or ibparent
) as a parent POM for your own repos, you must do the following:
-
Setup a profile in your
setting.xml
that configures the GPG plugin. -
Set a
<gpg.signing.profiles>
to whatever profiles you want activated during release. -
Usually, this would be the
release,YOUR_SIGNING_PROFILE_ID
-
An example settings is in
src/site/resources
-
You must set up the SCM settings to appropriately generate an SCM URL for Maven to do releases.
-
This starts with setting
<team.group.id>
but there is probably more to do depending on where your code lives, etc. -
Look at changing the
<git.*
properties to set other things. -
Setting the
<site.path>
and<ci.url>
will further enable you to release properly.