diff --git a/gerrit-acceptance-tests/src/test/java/com/google/gerrit/acceptance/server/mail/AbstractMailIT.java b/gerrit-acceptance-tests/src/test/java/com/google/gerrit/acceptance/server/mail/AbstractMailIT.java
index ccb86d9..4c38d83 100644
--- a/gerrit-acceptance-tests/src/test/java/com/google/gerrit/acceptance/server/mail/AbstractMailIT.java
+++ b/gerrit-acceptance-tests/src/test/java/com/google/gerrit/acceptance/server/mail/AbstractMailIT.java
@@ -25,9 +25,7 @@
 import com.google.gerrit.server.mail.receive.MailMessage;
 import java.util.HashMap;
 import org.joda.time.DateTime;
-import org.junit.Ignore;
 
-@Ignore
 public class AbstractMailIT extends AbstractDaemonTest {
 
   protected MailMessage.Builder messageBuilderWithDefaultFields() {
diff --git a/gerrit-acceptance-tests/src/test/java/com/google/gerrit/acceptance/server/mail/BUILD b/gerrit-acceptance-tests/src/test/java/com/google/gerrit/acceptance/server/mail/BUILD
index 2f70adc..71a6135 100644
--- a/gerrit-acceptance-tests/src/test/java/com/google/gerrit/acceptance/server/mail/BUILD
+++ b/gerrit-acceptance-tests/src/test/java/com/google/gerrit/acceptance/server/mail/BUILD
@@ -1,12 +1,24 @@
 load("//gerrit-acceptance-tests:tests.bzl", "acceptance_tests")
 
+DEPS = [
+    "//lib/greenmail",
+    "//lib/joda:joda-time",
+    "//lib/mail",
+]
+
 acceptance_tests(
-    srcs = glob(["*IT.java"]),
+    srcs = glob(
+        ["*IT.java"],
+        exclude = ["AbstractMailIT.java"],
+    ),
     group = "server_mail",
     labels = ["server"],
-    deps = [
-        "//lib/greenmail",
-        "//lib/joda:joda-time",
-        "//lib/mail",
-    ],
+    deps = [":util"] + DEPS,
+)
+
+java_library(
+    name = "util",
+    testonly = 1,
+    srcs = ["AbstractMailIT.java"],
+    deps = ["//gerrit-acceptance-tests:lib"] + DEPS,
 )
diff --git a/gerrit-acceptance-tests/tests.bzl b/gerrit-acceptance-tests/tests.bzl
index 3b1a4f4..562e3b7 100644
--- a/gerrit-acceptance-tests/tests.bzl
+++ b/gerrit-acceptance-tests/tests.bzl
@@ -4,7 +4,7 @@
     group,
     deps = [],
     labels = [],
-    vm_args = ['-Xmx256m'],
+    vm_args = ['-Xmx8g'],
     **kwargs):
   junit_tests(
     name = group,
diff --git a/gerrit-cache-h2/src/main/java/com/google/gerrit/server/cache/h2/H2CacheImpl.java b/gerrit-cache-h2/src/main/java/com/google/gerrit/server/cache/h2/H2CacheImpl.java
index 97c540e..3b86c95 100644
--- a/gerrit-cache-h2/src/main/java/com/google/gerrit/server/cache/h2/H2CacheImpl.java
+++ b/gerrit-cache-h2/src/main/java/com/google/gerrit/server/cache/h2/H2CacheImpl.java
@@ -504,8 +504,8 @@
       try {
         c = acquire();
         if (c.put == null) {
-          c.put = c.conn.prepareStatement(
-              "MERGE INTO data (k, v, created, accessed) VALUES(?,?,?,?)");
+          c.put =
+              c.conn.prepareStatement("MERGE INTO data (k, v, created, accessed) VALUES(?,?,?,?)");
         }
         try {
           keyType.set(c.put, 1, key);
@@ -572,8 +572,7 @@
         c = acquire();
         try (Statement s = c.conn.createStatement()) {
           long used = 0;
-          try (ResultSet r =
-              s.executeQuery("SELECT SUM(space) FROM data")) {
+          try (ResultSet r = s.executeQuery("SELECT SUM(space) FROM data")) {
             used = r.next() ? r.getLong(1) : 0;
           }
           if (used <= maxSize) {
@@ -582,12 +581,7 @@
 
           try (ResultSet r =
               s.executeQuery(
-                  "SELECT"
-                      + " k"
-                      + ",space"
-                      + ",created"
-                      + " FROM data"
-                      + " ORDER BY accessed")) {
+                  "SELECT" + " k" + ",space" + ",created" + " FROM data" + " ORDER BY accessed")) {
             while (maxSize < used && r.next()) {
               K key = keyType.get(r, 1);
               Timestamp created = r.getTimestamp(3);
@@ -615,12 +609,7 @@
       try {
         c = acquire();
         try (Statement s = c.conn.createStatement();
-            ResultSet r =
-                s.executeQuery(
-                    "SELECT"
-                        + " COUNT(*)"
-                        + ",SUM(space)"
-                        + " FROM data")) {
+            ResultSet r = s.executeQuery("SELECT" + " COUNT(*)" + ",SUM(space)" + " FROM data")) {
           if (r.next()) {
             size = r.getLong(1);
             space = r.getLong(2);
diff --git a/gerrit-pgm/src/main/java/com/google/gerrit/pgm/init/StaleLibraryRemover.java b/gerrit-pgm/src/main/java/com/google/gerrit/pgm/init/StaleLibraryRemover.java
index 325ae12..b713067 100644
--- a/gerrit-pgm/src/main/java/com/google/gerrit/pgm/init/StaleLibraryRemover.java
+++ b/gerrit-pgm/src/main/java/com/google/gerrit/pgm/init/StaleLibraryRemover.java
@@ -14,17 +14,16 @@
 
 package com.google.gerrit.pgm.init;
 
-import java.io.IOException;
-import java.nio.file.DirectoryStream;
-import java.nio.file.Files;
-import java.nio.file.Path;
-
 import com.google.common.base.Strings;
 import com.google.gerrit.common.Die;
 import com.google.gerrit.pgm.init.api.ConsoleUI;
 import com.google.gerrit.server.config.SitePaths;
 import com.google.inject.Inject;
 import com.google.inject.Singleton;
+import java.io.IOException;
+import java.nio.file.DirectoryStream;
+import java.nio.file.Files;
+import java.nio.file.Path;
 
 @Singleton
 public class StaleLibraryRemover {
