diff --git a/BUILD b/BUILD
index 932e07a..3534b37 100644
--- a/BUILD
+++ b/BUILD
@@ -12,7 +12,7 @@
     srcs = glob(["java/**/*.java"]),
     activator = "com.google.devtools.bazel.e4b.Activator",
     bundle_name = "Eclipse 4 Bazel",
-    resources = glob(["resources/**"]) + ["//resources/tools/must/be/unique:srcs"],
+    resources = ["//resources:srcs"],
     vendor = "The Bazel Authors",
     version = VERSION,
     visibility = ["//visibility:public"],
diff --git a/WORKSPACE b/WORKSPACE
index a91ed5f..4fd9945 100644
--- a/WORKSPACE
+++ b/WORKSPACE
@@ -2,7 +2,7 @@
 
 load("//tools/build_defs:eclipse.bzl", "load_eclipse_deps")
 load(":bazel_version.bzl", "check_bazel_version")
-check_bazel_version("0.4.5")
+check_bazel_version("0.5.0")
 
 load_eclipse_deps()
 
diff --git a/java/com/google/devtools/bazel/e4b/BazelAspectLocationImpl.java b/java/com/google/devtools/bazel/e4b/BazelAspectLocationImpl.java
index a14cdf3..b07f605 100644
--- a/java/com/google/devtools/bazel/e4b/BazelAspectLocationImpl.java
+++ b/java/com/google/devtools/bazel/e4b/BazelAspectLocationImpl.java
@@ -14,13 +14,15 @@
 
 package com.google.devtools.bazel.e4b;
 
-import com.google.devtools.bazel.e4b.command.BazelAspectLocation;
 import java.io.File;
 import java.io.IOException;
 import java.net.URL;
+
 import org.eclipse.core.runtime.FileLocator;
 import org.eclipse.core.runtime.Platform;
 
+import com.google.devtools.bazel.e4b.command.BazelAspectLocation;
+
 /** Implementation of {@link BazelAspectLocation} using Eclipse OSGi Bundle locations */
 class BazelAspectLocationImpl implements BazelAspectLocation {
 
@@ -44,7 +46,7 @@
 
   @Override
   public String getAspectLabel() {
-    return "//tools/must/be/unique:e4b_aspect.bzl%e4b_aspect";
+    return "//:e4b_aspect.bzl%e4b_aspect";
   }
 
 }
diff --git a/java/com/google/devtools/bazel/e4b/command/BazelCommand.java b/java/com/google/devtools/bazel/e4b/command/BazelCommand.java
index 28fae71..85c9282 100644
--- a/java/com/google/devtools/bazel/e4b/command/BazelCommand.java
+++ b/java/com/google/devtools/bazel/e4b/command/BazelCommand.java
@@ -14,10 +14,6 @@
 
 package com.google.devtools.bazel.e4b.command;
 
-import com.google.common.base.Joiner;
-import com.google.common.collect.ImmutableList;
-import com.google.common.collect.ImmutableMap;
-import com.google.devtools.bazel.e4b.command.CommandConsole.CommandConsoleFactory;
 import java.io.File;
 import java.io.IOException;
 import java.io.OutputStream;
@@ -29,6 +25,11 @@
 import java.util.regex.Matcher;
 import java.util.regex.Pattern;
 
+import com.google.common.base.Joiner;
+import com.google.common.collect.ImmutableList;
+import com.google.common.collect.ImmutableMap;
+import com.google.devtools.bazel.e4b.command.CommandConsole.CommandConsoleFactory;
+
 /**
  * Main utility to call bazel commands, wrapping its input and output to the message console.
  */
@@ -38,8 +39,8 @@
   private static Pattern VERSION_PATTERN =
       Pattern.compile("^([0-9]+)\\.([0-9]+)\\.([0-9]+)([^0-9].*)?$");
 
-  // Minimum bazel version needed to work with this plugin (currently 0.4.0)
-  private static int[] MINIMUM_BAZEL_VERSION = {0, 4, 0};
+  // Minimum bazel version needed to work with this plugin (currently 0.5.0)
+  private static int[] MINIMUM_BAZEL_VERSION = {0, 5, 0};
 
   private static enum ConsoleType {
     NO_CONSOLE, SYSTEM, WORKSPACE
@@ -62,7 +63,9 @@
     this.aspectLocation = aspectLocation;
     this.consoleFactory = consoleFactory;
     this.buildOptions =
-        ImmutableList.of("--watchfs", "--aspects=" + aspectLocation.getAspectLabel());
+        ImmutableList.of("--watchfs",
+            "--override_repository=local_eclipse_aspect=" + aspectLocation.getWorkspaceDirectory(),
+            "--aspects=@local_eclipse_aspect" + aspectLocation.getAspectLabel());
     this.aspectOptions = ImmutableList.<String>builder().addAll(buildOptions).add("-k",
         "--output_groups=ide-info-text,ide-resolve,-_,-defaults", "--experimental_show_artifacts")
         .build();
@@ -153,7 +156,6 @@
    */
   public class BazelInstance {
     private final File workspaceRoot;
-    private final String packagePath;
     private final File execRoot;
 
     private final Map<String, ImmutableMap<String, IdeBuildInfo>> buildInfoCache = new HashMap<>();
@@ -161,8 +163,6 @@
     private BazelInstance(File workspaceRoot)
         throws IOException, InterruptedException, BazelNotFoundException {
       this.workspaceRoot = workspaceRoot;
-      this.packagePath = String.join("", runBazel("info", "package_path")) + ":"
-          + aspectLocation.getWorkspaceDirectory().toString();
       this.execRoot = new File(String.join("", runBazel("info", "execution_root")));
     }
 
@@ -199,8 +199,8 @@
     private synchronized List<String> buildIdeInfo(Collection<String> targets)
         throws IOException, InterruptedException, BazelNotFoundException {
       return BazelCommand.this.runBazelAndGetErrorLines(ConsoleType.WORKSPACE, workspaceRoot,
-          ImmutableList.<String>builder().add("build").add("--package_path", packagePath)
-              .addAll(aspectOptions).addAll(targets).build(),
+          ImmutableList.<String>builder().add("build").addAll(aspectOptions).addAll(targets)
+              .build(),
           // Strip out the artifact list, keeping the e4b-build.json files.
           t -> t.startsWith(">>>") ? (t.endsWith(".e4b-build.json") ? t.substring(3) : "") : null);
     }
@@ -245,7 +245,7 @@
     public synchronized int build(List<String> targets, String... extraArgs)
         throws IOException, InterruptedException, BazelNotFoundException {
       return BazelCommand.this.runBazel(workspaceRoot,
-          ImmutableList.<String>builder().add("build", "--package_path", packagePath)
+          ImmutableList.<String>builder().add("build")
               .addAll(buildOptions).add(extraArgs).addAll(targets).build());
     }
 
@@ -257,7 +257,7 @@
     public synchronized int tests(List<String> targets, String... extraArgs)
         throws IOException, InterruptedException, BazelNotFoundException {
       return BazelCommand.this.runBazel(workspaceRoot,
-          ImmutableList.<String>builder().add("test").add("--package_path", packagePath)
+          ImmutableList.<String>builder().add("test")
               .addAll(buildOptions).add(extraArgs).addAll(targets).build());
     }
 
diff --git a/resources/BUILD b/resources/BUILD
new file mode 100644
index 0000000..78e2457
--- /dev/null
+++ b/resources/BUILD
@@ -0,0 +1,9 @@
+# This is a build file for creating a corresponding package. This package will be a local repository
+# added with --override_repository when using the aspect so we can load the e4b_aspect.bzl Skylark
+# aspect extension when calling build from Eclipse.
+
+filegroup(
+   name = "srcs",
+   srcs = glob(["**"]),
+   visibility = ["//visibility:public"],
+)
diff --git a/resources/WORKSPACE b/resources/WORKSPACE
new file mode 100644
index 0000000..11cc71a
--- /dev/null
+++ b/resources/WORKSPACE
@@ -0,0 +1,3 @@
+# This is a workspace file for creating a local repository added with --override_repository when
+# using the aspect so we can load the e4b_aspect.bzl Skylark aspect extension when calling build
+# from Eclipse.
\ No newline at end of file
diff --git a/resources/tools/must/be/unique/e4b_aspect.bzl b/resources/e4b_aspect.bzl
similarity index 100%
rename from resources/tools/must/be/unique/e4b_aspect.bzl
rename to resources/e4b_aspect.bzl
diff --git a/resources/tools/must/be/unique/BUILD b/resources/tools/must/be/unique/BUILD
deleted file mode 100644
index 3b68e55..0000000
--- a/resources/tools/must/be/unique/BUILD
+++ /dev/null
@@ -1,10 +0,0 @@
-# This is a build file for creating a corresponding package. This package will be added to the
-# package path when using the aspect so we can load the e4b_aspect.bzl Skylark aspect extension
-# when calling build from Eclipse. This package has an improbable name to avoid collision with
-# packages in the main repository.
-
-filegroup(
-   name = "srcs",
-   srcs = glob(["**"]),
-   visibility = ["//visibility:public"],
-)
