diff --git a/pom.xml b/pom.xml
index aab045b..9c2cc94 100644
--- a/pom.xml
+++ b/pom.xml
@@ -13,7 +13,7 @@
 	<name>Maven Taverna Plugin</name>
 	<description>A Maven plugin for packaging and deploying Taverna plugins</description>
 	<properties>
-		<maven.version>3.0.5</maven.version>
+		<maven.version>3.2.2</maven.version>
 		<mavenArchiverVersion>2.5</mavenArchiverVersion>
 	</properties>
 	<build>
diff --git a/src/main/java/net/sf/taverna/t2/maven/plugins/MavenOsgiUtils.java b/src/main/java/net/sf/taverna/t2/maven/plugins/MavenOsgiUtils.java
index fe7e225..6901119 100644
--- a/src/main/java/net/sf/taverna/t2/maven/plugins/MavenOsgiUtils.java
+++ b/src/main/java/net/sf/taverna/t2/maven/plugins/MavenOsgiUtils.java
@@ -45,9 +45,9 @@
 import org.apache.maven.project.DependencyResolutionResult;
 import org.apache.maven.project.MavenProject;
 import org.apache.maven.project.ProjectDependenciesResolver;
-import org.sonatype.aether.RepositorySystemSession;
-import org.sonatype.aether.graph.DependencyNode;
-import org.sonatype.aether.util.filter.ScopeDependencyFilter;
+import org.eclipse.aether.RepositorySystemSession;
+import org.eclipse.aether.graph.DependencyNode;
+import org.eclipse.aether.util.filter.ScopeDependencyFilter;
 
 import uk.org.taverna.commons.profile.xml.jaxb.BundleInfo;
 import aQute.bnd.header.Attrs;
diff --git a/src/main/java/net/sf/taverna/t2/maven/plugins/TavernaPluginDeployFileMojo.java b/src/main/java/net/sf/taverna/t2/maven/plugins/TavernaPluginDeployFileMojo.java
index cf2034b..2bcb380 100644
--- a/src/main/java/net/sf/taverna/t2/maven/plugins/TavernaPluginDeployFileMojo.java
+++ b/src/main/java/net/sf/taverna/t2/maven/plugins/TavernaPluginDeployFileMojo.java
@@ -76,6 +76,7 @@
 	@Parameter(property = "serverId", required = true)
 	protected String serverId;
 
+	@Override
 	public void execute() throws MojoExecutionException {
 		if (!file.exists()) {
 			throw new MojoExecutionException("The Taverna Plugin file " + file
diff --git a/src/main/java/net/sf/taverna/t2/maven/plugins/TavernaPluginDeployMojo.java b/src/main/java/net/sf/taverna/t2/maven/plugins/TavernaPluginDeployMojo.java
index 8ba1f3d..d02e719 100644
--- a/src/main/java/net/sf/taverna/t2/maven/plugins/TavernaPluginDeployMojo.java
+++ b/src/main/java/net/sf/taverna/t2/maven/plugins/TavernaPluginDeployMojo.java
@@ -56,6 +56,7 @@
 
 	private File tempDirectory;
 
+	@Override
 	public void execute() throws MojoExecutionException {
 		tempDirectory = new File(buildDirectory, TavernaProfileGenerateMojo.TAVERNA_TMP);
 		tempDirectory.mkdirs();
diff --git a/src/main/java/net/sf/taverna/t2/maven/plugins/TavernaPluginGenerateMojo.java b/src/main/java/net/sf/taverna/t2/maven/plugins/TavernaPluginGenerateMojo.java
index 355210b..d8e5ad2 100644
--- a/src/main/java/net/sf/taverna/t2/maven/plugins/TavernaPluginGenerateMojo.java
+++ b/src/main/java/net/sf/taverna/t2/maven/plugins/TavernaPluginGenerateMojo.java
@@ -42,7 +42,7 @@
 import org.apache.maven.project.ProjectDependenciesResolver;
 import org.apache.maven.shared.osgi.DefaultMaven2OsgiConverter;
 import org.apache.maven.shared.osgi.Maven2OsgiConverter;
-import org.sonatype.aether.RepositorySystemSession;
+import org.eclipse.aether.RepositorySystemSession;
 
 import uk.org.taverna.commons.plugin.xml.jaxb.PluginInfo;
 import uk.org.taverna.commons.profile.xml.jaxb.BundleInfo;
@@ -83,6 +83,7 @@
 
 	private Maven2OsgiConverter maven2OsgiConverter = new DefaultMaven2OsgiConverter();
 
+	@Override
 	public void execute() throws MojoExecutionException, MojoFailureException {
 		try {
 			osgiUtils = new MavenOsgiUtils(project, repositorySystemSession,
diff --git a/src/main/java/net/sf/taverna/t2/maven/plugins/TavernaPluginPrepareBundlesMojo.java b/src/main/java/net/sf/taverna/t2/maven/plugins/TavernaPluginPrepareBundlesMojo.java
index 7521017..298ec64 100644
--- a/src/main/java/net/sf/taverna/t2/maven/plugins/TavernaPluginPrepareBundlesMojo.java
+++ b/src/main/java/net/sf/taverna/t2/maven/plugins/TavernaPluginPrepareBundlesMojo.java
@@ -36,7 +36,7 @@
 import org.apache.maven.plugins.annotations.ResolutionScope;
 import org.apache.maven.project.MavenProject;
 import org.apache.maven.project.ProjectDependenciesResolver;
-import org.sonatype.aether.RepositorySystemSession;
+import org.eclipse.aether.RepositorySystemSession;
 
 /**
  * Prepares the plugin OSGi bundles.
@@ -63,6 +63,7 @@
 
 	private MavenOsgiUtils osgiUtils;
 
+	@Override
 	public void execute() throws MojoExecutionException, MojoFailureException {
 		osgiUtils = new MavenOsgiUtils(project, repositorySystemSession,
 				projectDependenciesResolver, getLog());
diff --git a/src/main/java/net/sf/taverna/t2/maven/plugins/TavernaProfileDeployMojo.java b/src/main/java/net/sf/taverna/t2/maven/plugins/TavernaProfileDeployMojo.java
index fce4ded..d1be059 100644
--- a/src/main/java/net/sf/taverna/t2/maven/plugins/TavernaProfileDeployMojo.java
+++ b/src/main/java/net/sf/taverna/t2/maven/plugins/TavernaProfileDeployMojo.java
@@ -61,6 +61,7 @@
 
 	private File tempDirectory;
 
+	@Override
 	public void execute() throws MojoExecutionException {
 		tempDirectory = new File(buildDirectory, TavernaProfileGenerateMojo.TAVERNA_TMP);
 		tempDirectory.mkdirs();
diff --git a/src/main/java/net/sf/taverna/t2/maven/plugins/TavernaProfileGenerateMojo.java b/src/main/java/net/sf/taverna/t2/maven/plugins/TavernaProfileGenerateMojo.java
index b255561..2badbd8 100644
--- a/src/main/java/net/sf/taverna/t2/maven/plugins/TavernaProfileGenerateMojo.java
+++ b/src/main/java/net/sf/taverna/t2/maven/plugins/TavernaProfileGenerateMojo.java
@@ -44,7 +44,7 @@
 import org.apache.maven.project.ProjectDependenciesResolver;
 import org.apache.maven.shared.osgi.DefaultMaven2OsgiConverter;
 import org.apache.maven.shared.osgi.Maven2OsgiConverter;
-import org.sonatype.aether.RepositorySystemSession;
+import org.eclipse.aether.RepositorySystemSession;
 
 import uk.org.taverna.commons.profile.xml.jaxb.ApplicationProfile;
 import uk.org.taverna.commons.profile.xml.jaxb.BundleInfo;
@@ -109,6 +109,7 @@
 
 	private File tempDirectory;
 
+	@Override
 	public void execute() throws MojoExecutionException, MojoFailureException {
 		try {
 			osgiUtils = new MavenOsgiUtils(project, repositorySystemSession,
