Skip to content
master
Switch branches/tags
Code

Latest commit

 

Git stats

Files

Permalink
Failed to load latest commit information.
Type
Name
Latest commit message
Commit time
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Mavenix

Deterministic Maven builds using Nix?

Install

First you need to install the Nix package manager, if you already haven't.

nix-env -i -f https://github.com/nix-community/mavenix/tarball/master

Usage

Create stub files

First we need to create some stub Nix expression files. cd into your maven project directory and run:

mvnix-init

Follow the instructions displayed.

Generate lock file

The mvnix-update script generates a mavenix.lock file:

mvnix-update

Note the mvnix-update script expects a default.nix that evaluates to the derivation, just as is generated by mvnix-init. It is possible however to pass in a custom expression in order to update the derivation. E.g., if the derivation is the attribute pkgset.pkg:

mvnix-update -E "(import ./. {}).pkgset.pkg"

Packaging third-party projects

If you are packaging a third-party Maven project you can specify a Nix expression that returns the source of that project.

This makes it possible to generate a lock file without having to first manually clone the target project repository.

E.g. generate and build a Nix package for Traccar v4.2:

mvnix-init -S 'fetchTarball "http://github.com/traccar/traccar/tarball/v4.2"'
mvnix-update
nix-build

Or a Spring Boot application:

mvnix-init -S 'fetchTarball https://github.com/Gerschtli/spring-rest-api/tarball/master'
mvnix-update
nix-build

About

Deterministic Maven builds using Nix [maintainer=@icetan]

Resources

License

Sponsor this project

Packages

No packages published