Repository: quarkusio/quarkus
Issue: if something is already running on port startup has no warning /signs of problems

**Describe the bug**
Start two quarkus:dev or something else confilciting on port 8080 and your second run will not show any warning/errors.

**Expected behavior**
Warning or even full error if ports cannot be bound.



Changed files:
devtools/maven/src/main/java/io/quarkus/maven/DevMojo.java
core/deployment/src/main/java/io/quarkus/deployment/dev/IsolatedDevModeMain.java
extensions/vertx-http/runtime/src/main/java/io/quarkus/vertx/http/runtime/VertxHttpRecorder.java

diff --git a/core/deployment/src/main/java/io/quarkus/deployment/dev/IsolatedDevModeMain.java b/core/deployment/src/main/java/io/quarkus/deployment/dev/IsolatedDevModeMain.java
index 0ae4c4b402c..c0785231810 100644
--- a/core/deployment/src/main/java/io/quarkus/deployment/dev/IsolatedDevModeMain.java
+++ b/core/deployment/src/main/java/io/quarkus/deployment/dev/IsolatedDevModeMain.java
@@ -114,8 +114,12 @@ public void accept(Integer integer) {
                             }
                             runtimeUpdatesProcessor.startupFailed();
                         } catch (Exception e) {
-                            t.addSuppressed(new RuntimeException("Failed to recover after failed start", e));
-                            throw new RuntimeException(t);
+                            close();
+                            log.error("Failed to recover after failed start", e);
+                            //this is the end of the road, we just exit
+                            //generally we only hit this if something is already listening on the HTTP port
+                            //or the system config is so broken we can't start HTTP
+                            System.exit(1);
                         }
                     }
                 }
diff --git a/devtools/maven/src/main/java/io/quarkus/maven/DevMojo.java b/devtools/maven/src/main/java/io/quarkus/maven/DevMojo.java
index 15e4b86464c..9743cee2f23 100644
--- a/devtools/maven/src/main/java/io/quarkus/maven/DevMojo.java
+++ b/devtools/maven/src/main/java/io/quarkus/maven/DevMojo.java
@@ -333,6 +333,9 @@ public void execute() throws MojoFailureException, MojoExecutionException {
                 if (System.currentTimeMillis() > nextCheck) {
                     nextCheck = System.currentTimeMillis() + 100;
                     if (!runner.process.isAlive()) {
+                        if (runner.process.exitValue() != 0) {
+                            throw new MojoExecutionException("Dev mode process did not complete successfully");
+                        }
                         return;
                     }
                     final Set<Path> changed = new HashSet<>();
diff --git a/extensions/vertx-http/runtime/src/main/java/io/quarkus/vertx/http/runtime/VertxHttpRecorder.java b/extensions/vertx-http/runtime/src/main/java/io/quarkus/vertx/http/runtime/VertxHttpRecorder.java
index 93a4f512647..88402c3cd9f 100644
--- a/extensions/vertx-http/runtime/src/main/java/io/quarkus/vertx/http/runtime/VertxHttpRecorder.java
+++ b/extensions/vertx-http/runtime/src/main/java/io/quarkus/vertx/http/runtime/VertxHttpRecorder.java
@@ -152,9 +152,15 @@ public static void startServerAfterFailedStart() {
             // the server start to fail
             hotReplacementHandler = prevHotReplacementHandler;
         }
-        VertxConfiguration vertxConfiguration = new VertxConfiguration();
-        ConfigInstantiator.handleObject(vertxConfiguration);
-        Vertx vertx = VertxCoreRecorder.initialize(vertxConfiguration, null);
+        Supplier<Vertx> supplier = VertxCoreRecorder.getVertx();
+        Vertx vertx;
+        if (supplier == null) {
+            VertxConfiguration vertxConfiguration = new VertxConfiguration();
+            ConfigInstantiator.handleObject(vertxConfiguration);
+            vertx = VertxCoreRecorder.initialize(vertxConfiguration, null);
+        } else {
+            vertx = supplier.get();
+        }
 
         try {
             HttpBuildTimeConfig buildConfig = new HttpBuildTimeConfig();