Link Search Menu Expand Document

Licence Management

We’ve tried to make licence management as simple as possible.

Arcmutate licences are plain text files tied to one or more root packages (e.g. com.example). They will work for any code in those packages until the date on which they expire.

When you purchase an arcmutate subscription, you will be assigned a unique licence id. The latest version of the licence for the subscription can be downloaded from

Using your licence id in place of AAFFDEMOAAFF.

The licence at your unique url will reflect any updates made to the subscription after purchase (e.g a change in the subscription type). When a subscription renews, the licence will automatically update with a new expiry date.

Licence locations

Arcmutate will look for licence files in two locations.

  • The root of the repository
  • The pitest reports directory

If you have purchased an annual subscription, the simplest way to apply the licence is to check it into the root of the source repository and update it manually when the subscription renews.

For monthly subscriptions (or if you have a large number of repositories) it may be more convenient to keep the licence up to date automatically by downloading the latest version of the licence from your unique url.

Updating the Licence in Maven Builds

For maven builds we provide the arcmutate-maven-plugin.

Maven Central

The refresh-licence goal automatically downloads licences into the target\pitest\arcmutate-licences directory of a project each time it is run.

To minimise the build’s reliance on the network, licence files are cached within the standard maven .m2/repository directory. By default, the plugin will update the cached copy of the licence if it is more than 7 days old. If the arcmutate.forceLicenceUpdate parameter is set to true, the latest version of the licence will always be downloaded.


Updating the Licence in Gradle Builds

For gradle builds we suggest using the gradle download task or a similar solution.

tasks.register<Download>("arcmutateLicence") {

To work correctly with gradle’s caching mechanism, the pitest task must depend upon the licence task.