diff --git a/packages/angular/cli/models/architect-command.ts b/packages/angular/cli/models/architect-command.ts
index 184dfc8d450a..b7d89a0b2421 100644
--- a/packages/angular/cli/models/architect-command.ts
+++ b/packages/angular/cli/models/architect-command.ts
@@ -103,10 +103,13 @@ export abstract class ArchitectCommand<
 
     if (this.target) {
       // Add options IF there's only one builder of this kind.
-      const projectNames = this.getProjectNamesByTarget(this.target);
+      const targetSpec: TargetSpecifier = this._makeTargetSpecifier(options);
+      const projectNames = targetSpec.project
+        ? [targetSpec.project]
+        : this.getProjectNamesByTarget(this.target);
+
       const builderConfigurations: BuilderConfiguration[] = [];
       for (const projectName of projectNames) {
-        const targetSpec: TargetSpecifier = this._makeTargetSpecifier(options);
         const targetDesc = this._architect.getBuilderConfiguration({
           project: projectName,
           target: targetSpec.target,
@@ -207,7 +210,7 @@ export abstract class ArchitectCommand<
       // For multi target commands, we always list all projects that have the target.
       return allProjectsForTargetName;
     } else {
-      // For single target commands, we try try the default project project first,
+      // For single target commands, we try the default project first,
       // then the full list if it has a single project, then error out.
       const maybeDefaultProject = this._workspace.getDefaultProjectName();
       if (maybeDefaultProject && allProjectsForTargetName.includes(maybeDefaultProject)) {
diff --git a/tests/legacy-cli/e2e/tests/misc/multiple-targets.ts b/tests/legacy-cli/e2e/tests/misc/multiple-targets.ts
new file mode 100644
index 000000000000..58c92dcfea7d
--- /dev/null
+++ b/tests/legacy-cli/e2e/tests/misc/multiple-targets.ts
@@ -0,0 +1,16 @@
+import { expectFileToExist } from '../../utils/fs';
+import { ng } from '../../utils/process';
+import { updateJsonFile } from '../../utils/project';
+
+export default async function () {
+  await ng('generate', 'app', 'secondary-app');
+
+  await updateJsonFile('angular.json', workspaceJson => {
+    workspaceJson.defaultProject = undefined;
+  });
+
+  await ng('build', 'secondary-app');
+
+  expectFileToExist('dist/secondary-app/index.html');
+  expectFileToExist('dist/secondary-app/main.js');
+}