diff --git a/pom.xml b/pom.xml
index d3450599c..d5a45568c 100644
--- a/pom.xml
+++ b/pom.xml
@@ -253,4 +253,80 @@ Jean-Yves Tinevez and Michael Zinsmaier.
test
+
+
+
+ org.apache.maven.plugins
+ maven-jar-plugin
+ ${maven-jar-plugin.version}
+
+
+
+ true
+
+
+
+
+
+
+
+
+ java-9
+
+ [9,)
+
+
+
+
+ org.apache.maven.plugins
+ maven-compiler-plugin
+ ${maven-compiler-plugin.version}
+
+
+ compile-java9
+ compile
+
+ compile
+
+
+ 9
+
+ ${project.build.sourceDirectory}
+ src/main/java9
+
+ ${project.build.directory}/classes9
+
+
+
+
+
+
+ org.apache.maven.plugins
+ maven-resources-plugin
+ ${maven-resources-plugin.version}
+
+
+ copy-module-info
+ prepare-package
+
+ copy-resources
+
+
+ ${project.build.outputDirectory}/META-INF/versions/9
+
+
+ ${project.build.directory}/classes9
+
+ module-info.class
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/main/java9/module-info.java b/src/main/java9/module-info.java
new file mode 100644
index 000000000..81fe13d4f
--- /dev/null
+++ b/src/main/java9/module-info.java
@@ -0,0 +1,64 @@
+module net.imglib2
+{
+ requires java.desktop;
+
+ exports net.imglib2;
+ exports net.imglib2.blocks;
+ exports net.imglib2.kdtree;
+ exports net.imglib2.parallel;
+ exports net.imglib2.test;
+ exports net.imglib2.converter;
+ exports net.imglib2.converter.readwrite;
+ exports net.imglib2.converter.read;
+ exports net.imglib2.util;
+ exports net.imglib2.outofbounds;
+ exports net.imglib2.position;
+ exports net.imglib2.position.transform;
+ exports net.imglib2.stream;
+ exports net.imglib2.concatenate;
+ exports net.imglib2.img;
+ exports net.imglib2.img.array;
+ exports net.imglib2.img.basictypeaccess;
+ exports net.imglib2.img.basictypeaccess.volatiles;
+ exports net.imglib2.img.basictypeaccess.volatiles.array;
+ exports net.imglib2.img.basictypeaccess.array;
+ exports net.imglib2.img.basictypeaccess.nio;
+ exports net.imglib2.img.planar;
+ exports net.imglib2.img.cell;
+ exports net.imglib2.img.list;
+ exports net.imglib2.img.sparse;
+ exports net.imglib2.iterator;
+ exports net.imglib2.type;
+ exports net.imglib2.type.volatiles;
+ exports net.imglib2.type.operators;
+ exports net.imglib2.type.logic;
+ exports net.imglib2.type.label;
+ exports net.imglib2.type.numeric;
+ exports net.imglib2.type.numeric.complex;
+ exports net.imglib2.type.numeric.real;
+ exports net.imglib2.type.numeric.integer;
+ exports net.imglib2.neighborsearch;
+ exports net.imglib2.view;
+ exports net.imglib2.view.composite;
+ exports net.imglib2.view.iteration;
+ exports net.imglib2.loops;
+ exports net.imglib2.display;
+ exports net.imglib2.display.projector;
+ exports net.imglib2.display.projector.volatiles;
+ exports net.imglib2.display.projector.specialized;
+ exports net.imglib2.display.projector.composite;
+ exports net.imglib2.display.projector.sampler;
+ exports net.imglib2.display.screenimage;
+ exports net.imglib2.display.screenimage.awt;
+ exports net.imglib2.display.awt;
+ exports net.imglib2.exception;
+ exports net.imglib2.transform;
+ exports net.imglib2.transform.integer;
+ exports net.imglib2.transform.integer.permutation;
+ exports net.imglib2.transform.integer.shear;
+ exports net.imglib2.interpolation;
+ exports net.imglib2.interpolation.randomaccess;
+ exports net.imglib2.interpolation.neighborsearch;
+ exports net.imglib2.interpolation.stack;
+ exports net.imglib2.histogram;
+}