Antony, You can do this explicitly when building your pipeline from the command args:
Options options = PipelineOptionsFactory.fromArgs(args).withValidation().as(Options.class); and when you run your app you pass --runner=YourFavoriteRunner and it will resolve, however different runners can need a bit of tuning. You can look at the examples module for how to enable profiles per runner, and some instructions in how to execute this with maven. https://github.com/apache/beam/tree/master/examples/java Also remember that if you run in a cluster you have to submit your jar, e.g. spark-submit or flink run, and this will be different in that style of deployment. I am not sure that resolving the runners implicitly is a good thing, for the issue that Dan mentions, each runner may need to be tuned with different options, and additionally because if we have multiple runners in the classpath we would need to define some priority to resolve them and I don't think it is a good thing to prefer one runner over the others. Ismaël
