diff --git a/packages/flutter_tools/bin/macos_assemble.sh b/packages/flutter_tools/bin/macos_assemble.sh
index 6b10f86..23128cc 100755
--- a/packages/flutter_tools/bin/macos_assemble.sh
+++ b/packages/flutter_tools/bin/macos_assemble.sh
@@ -72,4 +72,5 @@
     -dBuildMode="${build_mode}"                                             \
     --build-inputs="${build_inputs_path}"                                   \
     --build-outputs="${build_outputs_path}"                                 \
+    --output="${ephemeral_dir}"                                             \
    "${build_mode}_macos_bundle_flutter_assets"
diff --git a/packages/flutter_tools/lib/src/build_system/build_system.dart b/packages/flutter_tools/lib/src/build_system/build_system.dart
index e60c444..c97ce86 100644
--- a/packages/flutter_tools/lib/src/build_system/build_system.dart
+++ b/packages/flutter_tools/lib/src/build_system/build_system.dart
@@ -349,6 +349,7 @@
   /// defaults based on it.
   factory Environment({
     @required Directory projectDir,
+    @required Directory outputDir,
     Directory buildDir,
     Map<String, String> defines = const <String, String>{},
   }) {
@@ -371,6 +372,7 @@
     final Directory rootBuildDir = buildDir ?? projectDir.childDirectory('build');
     final Directory buildDirectory = rootBuildDir.childDirectory(buildPrefix);
     return Environment._(
+      outputDir: outputDir,
       projectDir: projectDir,
       buildDir: buildDirectory,
       rootBuildDir: rootBuildDir,
@@ -381,6 +383,7 @@
   }
 
   Environment._({
+    @required this.outputDir,
     @required this.projectDir,
     @required this.buildDir,
     @required this.rootBuildDir,
@@ -401,6 +404,9 @@
   /// The [Source] value which is substituted with a path to the flutter root.
   static const String kFlutterRootDirectory = '{FLUTTER_ROOT}';
 
+  /// The [Source] value which is substituted with a path to [outputDir].
+  static const String kOutputDirectory = '{OUTPUT_DIR}';
+
   /// The `PROJECT_DIR` environment variable.
   ///
   /// This should be root of the flutter project where a pubspec and dart files
@@ -424,6 +430,11 @@
   /// Defaults to to the value of [Cache.flutterRoot].
   final Directory flutterRootDir;
 
+  /// The `OUTPUT_DIR` environment variable.
+  ///
+  /// Must be provided to configure the output location for the final artifacts.
+  final Directory outputDir;
+
   /// Additional configuration passed to the build targets.
   ///
   /// Setting values here forces a unique build directory to be chosen
@@ -464,6 +475,7 @@
     { BuildSystemConfig buildSystemConfig = const BuildSystemConfig() }
   ) async {
     environment.buildDir.createSync(recursive: true);
+    environment.outputDir.createSync(recursive: true);
 
     // Load file hash store from previous builds.
     final FileHashStore fileCache = FileHashStore(environment)
@@ -482,7 +494,7 @@
     }
     // TODO(jonahwilliams): this is a bit of a hack, due to various parts of
     // the flutter tool writing these files unconditionally. Since Xcode uses
-    // timestamps to track files, this leads to unecessary rebuilds if they
+    // timestamps to track files, this leads to unnecessary rebuilds if they
     // are included. Once all the places that write these files have been
     // tracked down and moved into assemble, these checks should be removable.
     // We also remove files under .dart_tool, since these are intermediaries
diff --git a/packages/flutter_tools/lib/src/build_system/source.dart b/packages/flutter_tools/lib/src/build_system/source.dart
index 6aeda2c..2d43129 100644
--- a/packages/flutter_tools/lib/src/build_system/source.dart
+++ b/packages/flutter_tools/lib/src/build_system/source.dart
@@ -71,6 +71,10 @@
         segments.addAll(
             fs.path.split(environment.flutterRootDir.absolute.path));
         break;
+      case Environment.kOutputDirectory:
+        segments.addAll(
+            fs.path.split(environment.outputDir.resolveSymbolicLinksSync()));
+        break;
       default:
         throw InvalidPatternException(pattern);
     }
diff --git a/packages/flutter_tools/lib/src/build_system/targets/macos.dart b/packages/flutter_tools/lib/src/build_system/targets/macos.dart
index 78c0709..70e91c3 100644
--- a/packages/flutter_tools/lib/src/build_system/targets/macos.dart
+++ b/packages/flutter_tools/lib/src/build_system/targets/macos.dart
@@ -15,12 +15,11 @@
 import '../../devfs.dart';
 import '../../globals.dart';
 import '../../macos/xcode.dart';
-import '../../project.dart';
 import '../build_system.dart';
 import '../exceptions.dart';
 import 'dart.dart';
 
-const String _kOutputPrefix = '{PROJECT_DIR}/macos/Flutter/ephemeral/FlutterMacOS.framework';
+const String _kOutputPrefix = '{OUTPUT_DIR}/FlutterMacOS.framework';
 
 /// The copying logic for flutter assets in macOS.
 // TODO(jonahwilliams): remove once build planning lands.
@@ -51,8 +50,7 @@
       manifestPath: environment.projectDir.childFile('pubspec.yaml').path,
       packagesPath: environment.projectDir.childFile('.packages').path,
     );
-    final FlutterProject flutterProject = FlutterProject.fromDirectory(environment.projectDir);
-    final String prefix = fs.path.join(flutterProject.macos.ephemeralDirectory.path,
+    final String prefix = fs.path.join(environment.outputDir.path,
         'App.framework', 'Versions', 'A', 'Resources', 'flutter_assets');
     final List<File> results = <File>[];
     for (String key in assetBundle.entries.keys) {
@@ -65,7 +63,7 @@
 
 /// Copy the macOS framework to the correct copy dir by invoking 'cp -R'.
 ///
-/// This class is abstract to share logic between the three conrete
+/// This class is abstract to share logic between the three concrete
 /// implementations. The shelling out is done to avoid complications with
 /// preserving special files (e.g., symbolic links) in the framework structure.
 ///
@@ -121,9 +119,8 @@
     }
     final BuildMode buildMode = getBuildModeForName(environment.defines[kBuildMode]);
     final String basePath = artifacts.getArtifactPath(Artifact.flutterMacOSFramework, mode: buildMode);
-    final FlutterProject flutterProject = FlutterProject.fromDirectory(environment.projectDir);
-    final Directory targetDirectory = flutterProject.macos
-      .ephemeralDirectory
+    final Directory targetDirectory = environment
+      .outputDir
       .childDirectory('FlutterMacOS.framework');
     if (targetDirectory.existsSync()) {
       targetDirectory.deleteSync(recursive: true);
@@ -247,7 +244,6 @@
     if (buildMode == BuildMode.debug) {
       throw Exception('precompiled macOS framework only supported in release/profile builds.');
     }
-    final FlutterProject flutterProject = FlutterProject.fromDirectory(environment.projectDir);
     final int result = await AOTSnapshotter(reportTimings: false).build(
       bitcode: false,
       buildMode: buildMode,
@@ -255,7 +251,7 @@
       outputPath: environment.buildDir.path,
       platform: TargetPlatform.darwin_x64,
       darwinArch: DarwinArch.x86_64,
-      packagesPath: flutterProject.packagesFile.path
+      packagesPath: environment.projectDir.childFile('.packages').path,
     );
     if (result != 0) {
       throw Exception('gen shapshot failed.');
@@ -298,11 +294,11 @@
   @override
   List<Source> get outputs => const <Source>[
     Source.behavior(MacOSAssetBehavior()),
-    Source.pattern('{PROJECT_DIR}/macos/Flutter/ephemeral/App.framework/Versions/A/App'),
-    Source.pattern('{PROJECT_DIR}/macos/Flutter/ephemeral/App.framework/Versions/A/Resources/Info.plist'),
-    Source.pattern('{PROJECT_DIR}/macos/Flutter/ephemeral/App.framework/Versions/A/Resources/flutter_assets/AssetManifest.json'),
-    Source.pattern('{PROJECT_DIR}/macos/Flutter/ephemeral/App.framework/Versions/A/Resources/flutter_assets/FontManifest.json'),
-    Source.pattern('{PROJECT_DIR}/macos/Flutter/ephemeral/App.framework/Versions/A/Resources/flutter_assets/LICENSE'),
+    Source.pattern('{OUTPUT_DIR}/App.framework/Versions/A/App'),
+    Source.pattern('{OUTPUT_DIR}/App.framework/Versions/A/Resources/Info.plist'),
+    Source.pattern('{OUTPUT_DIR}/App.framework/Versions/A/Resources/flutter_assets/AssetManifest.json'),
+    Source.pattern('{OUTPUT_DIR}/App.framework/Versions/A/Resources/flutter_assets/FontManifest.json'),
+    Source.pattern('{OUTPUT_DIR}/App.framework/Versions/A/Resources/flutter_assets/LICENSE'),
   ];
 
   @override
@@ -311,9 +307,8 @@
       throw MissingDefineException(kBuildMode, 'compile_macos_framework');
     }
     final BuildMode buildMode = getBuildModeForName(environment.defines[kBuildMode]);
-    final FlutterProject flutterProject = FlutterProject.fromDirectory(environment.projectDir);
-    final Directory frameworkRootDirectory = flutterProject.macos
-        .ephemeralDirectory
+    final Directory frameworkRootDirectory = environment
+        .outputDir
         .childDirectory('App.framework');
     final Directory outputDirectory = frameworkRootDirectory
         .childDirectory('Versions')
@@ -420,7 +415,6 @@
       if (!currentVersion.existsSync()) {
         final String linkPath = fs.path.relative(outputDirectory.path,
             from: outputDirectory.parent.path);
-         print(linkPath);
         currentVersion.createSync('$linkPath${fs.path.separator}');
       }
       // Create symlink to current resources.
@@ -429,7 +423,6 @@
       if (!currentResources.existsSync()) {
         final String linkPath = fs.path.relative(fs.path.join(currentVersion.path, 'Resources'),
             from: frameworkRootDirectory.path);
-        print(linkPath);
         currentResources.createSync(linkPath);
       }
       // Create symlink to current binary.
@@ -438,12 +431,11 @@
       if (!currentFramework.existsSync()) {
         final String linkPath = fs.path.relative(fs.path.join(currentVersion.path, 'App'),
             from: frameworkRootDirectory.path);
-         print(linkPath);
         currentFramework.createSync(linkPath);
       }
     } on FileSystemException {
       throw Exception('Failed to create symlinks for framework. try removing '
-        'the "${flutterProject.macos.ephemeralDirectory.path}" directory and rerunning');
+        'the "${environment.outputDir.path}" directory and rerunning');
     }
   }
 }
@@ -473,9 +465,9 @@
   @override
   List<Source> get outputs => <Source>[
     ...super.outputs,
-    const Source.pattern('{PROJECT_DIR}/macos/Flutter/ephemeral/App.framework/Versions/A/Resources/flutter_assets/kernel_blob.bin'),
-    const Source.pattern('{PROJECT_DIR}/macos/Flutter/ephemeral/App.framework/Versions/A/Resources/flutter_assets/vm_snapshot_data'),
-    const Source.pattern('{PROJECT_DIR}/macos/Flutter/ephemeral/App.framework/Versions/A/Resources/flutter_assets/isolate_snapshot_data'),
+    const Source.pattern('{OUTPUT_DIR}/App.framework/Versions/A/Resources/flutter_assets/kernel_blob.bin'),
+    const Source.pattern('{OUTPUT_DIR}/App.framework/Versions/A/Resources/flutter_assets/vm_snapshot_data'),
+    const Source.pattern('{OUTPUT_DIR}/App.framework/Versions/A/Resources/flutter_assets/isolate_snapshot_data'),
   ];
 }
 
diff --git a/packages/flutter_tools/lib/src/commands/assemble.dart b/packages/flutter_tools/lib/src/commands/assemble.dart
index dc8a8ae..db0df03 100644
--- a/packages/flutter_tools/lib/src/commands/assemble.dart
+++ b/packages/flutter_tools/lib/src/commands/assemble.dart
@@ -54,6 +54,10 @@
         'separated file containing all outputs used will be written after a build.'
         ' This file is not included as a build input or output. This file is not'
         ' written if the build fails for any reason.');
+    argParser.addOption('output', abbr: 'o', help: 'A directory where output '
+        'files will be written. Must be either absolute or relative from the '
+        'root of the current Flutter project.',
+    );
     argParser.addOption(
       'resource-pool-size',
       help: 'The maximum number of concurrent tasks the build system will run.'
@@ -83,7 +87,16 @@
   /// The environmental configuration for a build invocation.
   Environment get environment {
     final FlutterProject flutterProject = FlutterProject.current();
+    String output = argResults['output'];
+    if (output == null) {
+      throwToolExit('--output directory is required for assemble.');
+    }
+    // If path is relative, make it absolute from flutter project.
+    if (fs.path.isRelative(output)) {
+      output = fs.path.join(flutterProject.directory.path, output);
+    }
     final Environment result = Environment(
+      outputDir: fs.directory(output),
       buildDir: flutterProject.directory
           .childDirectory('.dart_tool')
           .childDirectory('flutter_build'),
diff --git a/packages/flutter_tools/test/general.shard/build_system/build_system_test.dart b/packages/flutter_tools/test/general.shard/build_system/build_system_test.dart
index e806251..1b2017e 100644
--- a/packages/flutter_tools/test/general.shard/build_system/build_system_test.dart
+++ b/packages/flutter_tools/test/general.shard/build_system/build_system_test.dart
@@ -92,6 +92,7 @@
     testbed = Testbed(
       setup: () {
         environment = Environment(
+          outputDir: fs.currentDirectory,
           projectDir: fs.currentDirectory,
         );
         fs.file('foo.dart')
diff --git a/packages/flutter_tools/test/general.shard/build_system/filecache_test.dart b/packages/flutter_tools/test/general.shard/build_system/filecache_test.dart
index 4f74de4..15c7871 100644
--- a/packages/flutter_tools/test/general.shard/build_system/filecache_test.dart
+++ b/packages/flutter_tools/test/general.shard/build_system/filecache_test.dart
@@ -18,6 +18,7 @@
     testbed = Testbed(setup: () {
       fs.directory('build').createSync();
       environment = Environment(
+        outputDir: fs.currentDirectory,
         projectDir: fs.currentDirectory,
       );
       environment.buildDir.createSync(recursive: true);
diff --git a/packages/flutter_tools/test/general.shard/build_system/source_test.dart b/packages/flutter_tools/test/general.shard/build_system/source_test.dart
index 8d0c2a4..e3d7d4e 100644
--- a/packages/flutter_tools/test/general.shard/build_system/source_test.dart
+++ b/packages/flutter_tools/test/general.shard/build_system/source_test.dart
@@ -21,7 +21,10 @@
   setUp(() {
     testbed = Testbed(setup: () {
       fs.directory('cache').createSync();
+      final Directory outputs = fs.directory('outputs')
+          ..createSync();
       environment = Environment(
+        outputDir: outputs,
         projectDir: fs.currentDirectory,
         buildDir: fs.directory('build'),
       );
@@ -45,6 +48,15 @@
     expect(visitor.sources.single.path, fs.path.absolute('foo'));
   }));
 
+  test('can substitute {OUTPUT_DIR}/foo', () => testbed.run(() {
+    fs.file('foo').createSync();
+    const Source fooSource = Source.pattern('{OUTPUT_DIR}/foo');
+    fooSource.accept(visitor);
+
+    expect(visitor.sources.single.path, fs.path.absolute(fs.path.join('outputs', 'foo')));
+  }));
+
+
   test('can substitute {BUILD_DIR}/bar', () => testbed.run(() {
     final String path = fs.path.join(environment.buildDir.path, 'bar');
     fs.file(path).createSync();
diff --git a/packages/flutter_tools/test/general.shard/build_system/targets/assets_test.dart b/packages/flutter_tools/test/general.shard/build_system/targets/assets_test.dart
index f4fbb50..7badd19 100644
--- a/packages/flutter_tools/test/general.shard/build_system/targets/assets_test.dart
+++ b/packages/flutter_tools/test/general.shard/build_system/targets/assets_test.dart
@@ -17,6 +17,7 @@
   setUp(() {
     testbed = Testbed(setup: () {
       environment = Environment(
+        outputDir: fs.currentDirectory,
         projectDir: fs.currentDirectory,
       );
       fs.file(fs.path.join('packages', 'flutter_tools', 'lib', 'src',
@@ -71,6 +72,7 @@
       ..writeAsStringSync('name: foo\ndependencies:\n  foo: any\n');
 
     await const FlutterPlugins().build(<File>[], Environment(
+      outputDir: fs.currentDirectory,
       projectDir: fs.currentDirectory,
     ));
 
diff --git a/packages/flutter_tools/test/general.shard/build_system/targets/dart_test.dart b/packages/flutter_tools/test/general.shard/build_system/targets/dart_test.dart
index caa5352..7b18e6f 100644
--- a/packages/flutter_tools/test/general.shard/build_system/targets/dart_test.dart
+++ b/packages/flutter_tools/test/general.shard/build_system/targets/dart_test.dart
@@ -39,6 +39,7 @@
     mockProcessManager = MockProcessManager();
     testbed = Testbed(setup: () {
       androidEnvironment = Environment(
+        outputDir: fs.currentDirectory,
         projectDir: fs.currentDirectory,
         defines: <String, String>{
           kBuildMode: getNameForBuildMode(BuildMode.profile),
@@ -46,6 +47,7 @@
         }
       );
       iosEnvironment = Environment(
+        outputDir: fs.currentDirectory,
         projectDir: fs.currentDirectory,
         defines: <String, String>{
           kBuildMode: getNameForBuildMode(BuildMode.profile),
@@ -158,6 +160,7 @@
     });
 
     await const KernelSnapshot().build(<File>[], Environment(
+        outputDir: fs.currentDirectory,
         projectDir: fs.currentDirectory,
         defines: <String, String>{
       kBuildMode: 'debug',
diff --git a/packages/flutter_tools/test/general.shard/build_system/targets/linux_test.dart b/packages/flutter_tools/test/general.shard/build_system/targets/linux_test.dart
index 78f387a..6f6bcbf 100644
--- a/packages/flutter_tools/test/general.shard/build_system/targets/linux_test.dart
+++ b/packages/flutter_tools/test/general.shard/build_system/targets/linux_test.dart
@@ -31,6 +31,7 @@
     testbed = Testbed(setup: () {
       Cache.flutterRoot = '';
       environment = Environment(
+        outputDir: fs.currentDirectory,
         projectDir: fs.currentDirectory,
       );
       fs.file('bin/cache/artifacts/engine/linux-x64/libflutter_linux_glfw.so').createSync(recursive: true);
diff --git a/packages/flutter_tools/test/general.shard/build_system/targets/macos_test.dart b/packages/flutter_tools/test/general.shard/build_system/targets/macos_test.dart
index 4b14f40..344bbc1 100644
--- a/packages/flutter_tools/test/general.shard/build_system/targets/macos_test.dart
+++ b/packages/flutter_tools/test/general.shard/build_system/targets/macos_test.dart
@@ -21,7 +21,7 @@
 import '../../../src/testbed.dart';
 
 const String _kInputPrefix = 'bin/cache/artifacts/engine/darwin-x64/FlutterMacOS.framework';
-const String _kOutputPrefix = 'macos/Flutter/ephemeral/FlutterMacOS.framework';
+const String _kOutputPrefix = 'FlutterMacOS.framework';
 
 final List<File> inputs = <File>[
   fs.file('$_kInputPrefix/FlutterMacOS'),
@@ -68,6 +68,7 @@
           'vmservice_io.dart')).createSync(recursive: true);
 
       environment = Environment(
+        outputDir: fs.currentDirectory,
         projectDir: fs.currentDirectory,
         defines: <String, String>{
           kBuildMode: 'debug',
@@ -126,13 +127,11 @@
         'isolate_snapshot.bin')).createSync(recursive: true);
     fs.file(fs.path.join(environment.buildDir.path, 'App.framework', 'App'))
         ..createSync(recursive: true);
-    final String frameworkPath = fs.path.join(environment.projectDir.path,
-        'macos', 'Flutter', 'ephemeral', 'App.framework');
+
     final String inputKernel = fs.path.join(environment.buildDir.path, 'app.dill');
-    fs.directory(frameworkPath).createSync(recursive: true);
-    final String outputKernel = fs.path.join(frameworkPath, 'Versions', 'A', 'Resources',
+    final String outputKernel = fs.path.join('App.framework', 'Versions', 'A', 'Resources',
         'flutter_assets', 'kernel_blob.bin');
-    final String outputPlist = fs.path.join(frameworkPath, 'Versions', 'A', 'Resources',
+    final String outputPlist = fs.path.join('App.framework', 'Versions', 'A', 'Resources',
         'Info.plist');
     fs.file(inputKernel)
       ..createSync(recursive: true)
@@ -151,14 +150,11 @@
         'isolate_snapshot.bin')).createSync(recursive: true);
     fs.file(fs.path.join(environment.buildDir.path, 'App.framework', 'App'))
         ..createSync(recursive: true);
-    final String frameworkPath = fs.path.join(environment.projectDir.path,
-        'macos', 'Flutter', 'ephemeral', 'App.framework');
-    fs.directory(frameworkPath).createSync(recursive: true);
-    final String outputKernel = fs.path.join(frameworkPath, 'Resources',
+    final String outputKernel = fs.path.join('App.framework', 'Resources',
         'flutter_assets', 'kernel_blob.bin');
-    final String precompiledVm = fs.path.join(frameworkPath, 'Resources',
+    final String precompiledVm = fs.path.join('App.framework', 'Resources',
         'flutter_assets', 'vm_snapshot_data');
-    final String precompiledIsolate = fs.path.join(frameworkPath, 'Resources',
+    final String precompiledIsolate = fs.path.join('App.framework', 'Resources',
         'flutter_assets', 'isolate_snapshot_data');
     await const ProfileMacOSBundleFlutterAssets().build(<File>[], environment..defines[kBuildMode] = 'profile');
 
diff --git a/packages/flutter_tools/test/general.shard/build_system/targets/windows_test.dart b/packages/flutter_tools/test/general.shard/build_system/targets/windows_test.dart
index 9bfbe48..539c3de 100644
--- a/packages/flutter_tools/test/general.shard/build_system/targets/windows_test.dart
+++ b/packages/flutter_tools/test/general.shard/build_system/targets/windows_test.dart
@@ -32,6 +32,7 @@
     when(platform.pathSeparator).thenReturn(r'\');
     testbed = Testbed(setup: () {
       environment = Environment(
+        outputDir: fs.currentDirectory,
         projectDir: fs.currentDirectory,
       );
       fs.file(r'C:\bin\cache\artifacts\engine\windows-x64\flutter_export.h').createSync(recursive: true);
diff --git a/packages/flutter_tools/test/general.shard/commands/assemble_test.dart b/packages/flutter_tools/test/general.shard/commands/assemble_test.dart
index 2c227af..dc247d3 100644
--- a/packages/flutter_tools/test/general.shard/commands/assemble_test.dart
+++ b/packages/flutter_tools/test/general.shard/commands/assemble_test.dart
@@ -36,12 +36,22 @@
       return BuildResult(success: true);
     });
     final CommandRunner<void> commandRunner = createTestCommandRunner(AssembleCommand());
-    await commandRunner.run(<String>['assemble', 'debug_macos_bundle_flutter_assets']);
+    await commandRunner.run(<String>['assemble', '-o Output', 'debug_macos_bundle_flutter_assets']);
     final BufferLogger bufferLogger = logger;
 
     expect(bufferLogger.statusText.trim(), 'build succeeded.');
   }));
 
+  test('Throws ToolExit if not provided with output', () => testbed.run(() async {
+    when(mockBuildSystem.build(any, any, buildSystemConfig: anyNamed('buildSystemConfig')))
+        .thenAnswer((Invocation invocation) async {
+      return BuildResult(success: true);
+    });
+    final CommandRunner<void> commandRunner = createTestCommandRunner(AssembleCommand());
+
+    expect(commandRunner.run(<String>['assemble', 'debug_macos_bundle_flutter_assets']), throwsA(isInstanceOf<ToolExit>()));
+  }));
+
   test('Throws ToolExit if called with non-existent rule', () => testbed.run(() async {
     when(mockBuildSystem.build(any, any, buildSystemConfig: anyNamed('buildSystemConfig')))
         .thenAnswer((Invocation invocation) async {
@@ -49,8 +59,9 @@
     });
     final CommandRunner<void> commandRunner = createTestCommandRunner(AssembleCommand());
 
-    expect(commandRunner.run(<String>['assemble', 'undefined']), throwsA(isInstanceOf<ToolExit>()));
+    expect(commandRunner.run(<String>['assemble', '-o Output', 'undefined']), throwsA(isInstanceOf<ToolExit>()));
   }));
+
   test('Only writes input and output files when the values change', () => testbed.run(() async {
     when(mockBuildSystem.build(any, any, buildSystemConfig: anyNamed('buildSystemConfig')))
         .thenAnswer((Invocation invocation) async {
@@ -62,7 +73,7 @@
     });
 
     final CommandRunner<void> commandRunner = createTestCommandRunner(AssembleCommand());
-    await commandRunner.run(<String>['assemble', '--build-outputs=outputs', '--build-inputs=inputs', 'debug_macos_bundle_flutter_assets']);
+    await commandRunner.run(<String>['assemble', '-o Output', '--build-outputs=outputs', '--build-inputs=inputs', 'debug_macos_bundle_flutter_assets']);
 
     final File inputs = fs.file('inputs');
     final File outputs = fs.file('outputs');
@@ -72,7 +83,7 @@
     final DateTime theDistantPast = DateTime(1991, 8, 23);
     inputs.setLastModifiedSync(theDistantPast);
     outputs.setLastModifiedSync(theDistantPast);
-    await commandRunner.run(<String>['assemble', '--build-outputs=outputs', '--build-inputs=inputs', 'debug_macos_bundle_flutter_assets']);
+    await commandRunner.run(<String>['assemble', '-o Output', '--build-outputs=outputs', '--build-inputs=inputs', 'debug_macos_bundle_flutter_assets']);
 
     expect(inputs.lastModifiedSync(), theDistantPast);
     expect(outputs.lastModifiedSync(), theDistantPast);
@@ -85,7 +96,7 @@
         inputFiles: <File>[fs.file('foo'), fs.file('fizz')..createSync()],
         outputFiles: <File>[fs.file('bar'), fs.file(fs.path.join('.dart_tool', 'fizz2'))..createSync(recursive: true)]);
     });
-    await commandRunner.run(<String>['assemble', '--build-outputs=outputs', '--build-inputs=inputs', 'debug_macos_bundle_flutter_assets']);
+    await commandRunner.run(<String>['assemble', '-o Output', '--build-outputs=outputs', '--build-inputs=inputs', 'debug_macos_bundle_flutter_assets']);
 
     expect(inputs.readAsStringSync(), contains('foo'));
     expect(inputs.readAsStringSync(), contains('fizz'));
