diff --git a/extensions/vertx/runtime/src/main/java/io/quarkus/vertx/core/runtime/VertxCoreRecorder.java b/extensions/vertx/runtime/src/main/java/io/quarkus/vertx/core/runtime/VertxCoreRecorder.java index d7e20c81b4a95..978c5887321f3 100644 --- a/extensions/vertx/runtime/src/main/java/io/quarkus/vertx/core/runtime/VertxCoreRecorder.java +++ b/extensions/vertx/runtime/src/main/java/io/quarkus/vertx/core/runtime/VertxCoreRecorder.java @@ -334,7 +334,7 @@ private static VertxOptions convertToVertxOptions(VertxConfiguration conf, Vertx .setClassPathResolvingEnabled(conf.classpathResolving()); String fileCacheDir = System.getProperty(CACHE_DIR_BASE_PROP_NAME); - if (fileCacheDir != null) { + if (fileCacheDir == null) { fileCacheDir = conf.cacheDirectory().orElse(null); } diff --git a/extensions/vertx/runtime/src/test/java/io/quarkus/vertx/core/runtime/VertxCoreProducerTest.java b/extensions/vertx/runtime/src/test/java/io/quarkus/vertx/core/runtime/VertxCoreProducerTest.java index 0341a22de21c5..b5a6868b2b41f 100644 --- a/extensions/vertx/runtime/src/test/java/io/quarkus/vertx/core/runtime/VertxCoreProducerTest.java +++ b/extensions/vertx/runtime/src/test/java/io/quarkus/vertx/core/runtime/VertxCoreProducerTest.java @@ -1,5 +1,7 @@ package io.quarkus.vertx.core.runtime; +import static io.vertx.core.file.impl.FileResolverImpl.CACHE_DIR_BASE_PROP_NAME; + import java.time.Duration; import java.util.Arrays; import java.util.List; @@ -221,6 +223,24 @@ public void accept(VertxOptions vertxOptions) { Assertions.assertTrue(called.get(), "Customizer should get called during initialization"); } + @Test + public void vertxCacheDirectoryBySystemProperty() { + final String cacheDir = System.getProperty("user.dir"); + try { + System.setProperty(CACHE_DIR_BASE_PROP_NAME, cacheDir); + VertxOptionsCustomizer customizers = new VertxOptionsCustomizer(List.of( + vertxOptions -> { + Assertions.assertNotNull(vertxOptions.getFileSystemOptions()); + Assertions.assertEquals(cacheDir, vertxOptions.getFileSystemOptions().getFileCacheDir()); + })); + VertxCoreRecorder.initialize(new DefaultVertxConfiguration(), customizers, ThreadPoolConfig.empty(), + null, + LaunchMode.TEST); + } finally { + System.clearProperty(CACHE_DIR_BASE_PROP_NAME); + } + } + private static class DefaultVertxConfiguration implements VertxConfiguration { @Override public boolean caching() {