Repository: quarkusio/quarkus
Issue: Exception when using a custom registered microprofile converter

**Describe the bug**
It is possible to have configuration in application.properties / application.yaml that you don't want to convert to a String but a object of some type. Via org.eclipse.microprofile.config.spi.Converter it is possible to register such a Converter.

If we now run the test annotated with @QuarkusTest we get an exception.

**Expected behavior**
No exception should occur and the properties should be correctly converted to the required object.

**Actual behavior**
The following exception is thrown : 

```
java.util.ServiceConfigurationError: org.eclipse.microprofile.config.spi.Converter: com.ennovativesolutions.converter.LocationConverter not a subtype
	at java.base/java.util.ServiceLoader.fail(ServiceLoader.java:588)
	at java.base/java.util.ServiceLoader$LazyClassPathLookupIterator.hasNextService(ServiceLoader.java:1236)
	at java.base/java.util.ServiceLoader$LazyClassPathLookupIterator.hasNext(ServiceLoader.java:1264)
	at java.base/java.util.ServiceLoader$2.hasNext(ServiceLoader.java:1299)
	at java.base/java.util.ServiceLoader$3.hasNext(ServiceLoader.java:1384)
	at java.base/java.lang.Iterable.forEach(Iterable.java:74)
	at io.smallrye.config.SmallRyeConfigBuilder.discoverConverters(SmallRyeConfigBuilder.java:87)
	at io.smallrye.config.SmallRyeConfigBuilder.build(SmallRyeConfigBuilder.java:184)
	at io.quarkus.runtime.configuration.QuarkusConfigFactory.getConfigFor(QuarkusConfigFactory.java:33)
	at io.smallrye.config.SmallRyeConfigProviderResolver.getConfig(SmallRyeConfigProviderResolver.java:86)
	at io.quarkus.deployment.QuarkusAugmentor.run(QuarkusAugmentor.java:168)
	at io.quarkus.runner.bootstrap.AugmentActionImpl.runAugment(AugmentActionImpl.java:245)
	at io.quarkus.runner.bootstrap.AugmentActionImpl.createInitialRuntimeApplication(AugmentActionImpl.java:130)
	at io.quarkus.runner.bootstrap.AugmentActionImpl.createInitialRuntimeApplication(AugmentActionImpl.java:52)
	at io.quarkus.test.junit.QuarkusTestExtension.doJavaStart(QuarkusTestExtension.java:131)
	at io.quarkus.test.junit.QuarkusTestExtension.ensureStarted(QuarkusTestExtension.java:269)
	at io.quarkus.test.junit.QuarkusTestExtension.beforeAll(QuarkusTestExtension.java:292)
	at org.junit.jupiter.engine.descriptor.ClassBasedTestDescriptor.lambda$invokeBeforeAllCallbacks$7(ClassBasedTestDescriptor.java:359)
	at org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:73)
	at org.junit.jupiter.engine.descriptor.ClassBasedTestDescriptor.invokeBeforeAllCallbacks(ClassBasedTestDescriptor.java:359)
	at org.junit.jupiter.engine.descriptor.ClassBasedTestDescriptor.before(ClassBasedTestDescriptor.java:189)
	at org.junit.jupiter.engine.descriptor.ClassBasedTestDescriptor.before(ClassBasedTestDescriptor.java:78)
	at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$5(NodeTestTask.java:132)
```


**To Reproduce**
Steps to reproduce the behavior:
1. Run the the LocationServiceTest

**Configuration**
```yaml
quarkus:
  log:
    level: INFO
    console:
      enable: true
      format: {"timestamp": "%d{yyyy-MM-dd'T'HH:mm:ss.SSS}", "type":"LogMessage", "level": "%p", "loggerName": "%C", "message": "%s", "appName":"location", "componentName":"location-lambda", "stackTrace":"%e" }
  lambda:
    handler: LocationLambda
  ssl:
    native: true

locations:
  - prefix: 27
    name: LocationName
```

**Environment (please complete the following information):**
 - Output of `uname -a` or `ver`: Darwin APRXJGH6D5D5F9 18.7.0 Darwin Kernel Version 18.7.0: Thu Jan 23 06:52:12 PST 2020; root:xnu-4903.278.25~1/RELEASE_X86_64 x86_64
 - Output of `java -version`: OpenJDK Runtime Environment AdoptOpenJDK (build 11.0.6+10)
 - GraalVM version (if different from Java): N/A
 - Quarkus version or git rev: 1.4.1.Final
 - Build tool (ie. output of `mvnw --version` or `gradlew --version`): Gradle(w) 6.0.1

**Additional context**
In the previous version of Quarkus 1.3.2.Final the converter was not found when running the test, so I upgraded to 1.4.1.Final and bumped into this issue.

Changed files:
independent-projects/bootstrap/core/src/main/java/io/quarkus/bootstrap/app/CuratedApplication.java

diff --git a/independent-projects/bootstrap/core/src/main/java/io/quarkus/bootstrap/app/CuratedApplication.java b/independent-projects/bootstrap/core/src/main/java/io/quarkus/bootstrap/app/CuratedApplication.java
index 6751f23a5b4..52eb887d3d5 100644
--- a/independent-projects/bootstrap/core/src/main/java/io/quarkus/bootstrap/app/CuratedApplication.java
+++ b/independent-projects/bootstrap/core/src/main/java/io/quarkus/bootstrap/app/CuratedApplication.java
@@ -147,7 +147,9 @@ private synchronized void processCpElement(AppArtifact artifact, Consumer<ClassP
         }
         artifact.getPaths().forEach(path -> {
             final ClassPathElement element = ClassPathElement.fromPath(path);
-            augmentationElements.put(artifact, element);
+            if (artifact.getPaths().isSinglePath()) {
+                augmentationElements.put(artifact, element);
+            }
             consumer.accept(element);
         });
     }
@@ -176,8 +178,6 @@ public synchronized QuarkusClassLoader getAugmentClassLoader() {
                 processCpElement(i.getArtifact(), element -> addCpElement(builder, i.getArtifact(), element));
             }
 
-            processCpElement(appModel.getAppArtifact(), element -> addCpElement(builder, appModel.getAppArtifact(), element));
-
             for (Path i : quarkusBootstrap.getAdditionalDeploymentArchives()) {
                 builder.addElement(ClassPathElement.fromPath(i));
             }
@@ -212,6 +212,9 @@ public synchronized QuarkusClassLoader getBaseRuntimeClassLoader() {
 
                 if (quarkusBootstrap.getApplicationRoot() != null) {
                     builder.addElement(ClassPathElement.fromPath(quarkusBootstrap.getApplicationRoot()));
+                } else {
+                    processCpElement(appModel.getAppArtifact(),
+                            element -> addCpElement(builder, appModel.getAppArtifact(), element));
                 }
             }
             //additional user class path elements first
@@ -234,8 +237,6 @@ public synchronized QuarkusClassLoader getBaseRuntimeClassLoader() {
                 processCpElement(dependency.getArtifact(), element -> addCpElement(builder, dependency.getArtifact(), element));
             }
 
-            processCpElement(appModel.getAppArtifact(), element -> addCpElement(builder, appModel.getAppArtifact(), element));
-
             baseRuntimeClassLoader = builder.build();
         }
         return baseRuntimeClassLoader;
@@ -264,6 +265,8 @@ public QuarkusClassLoader createDeploymentClassLoader() {
 
         if (quarkusBootstrap.getApplicationRoot() != null) {
             builder.addElement(ClassPathElement.fromPath(quarkusBootstrap.getApplicationRoot()));
+        } else {
+            processCpElement(appModel.getAppArtifact(), element -> addCpElement(builder, appModel.getAppArtifact(), element));
         }
 
         //additional user class path elements first
@@ -284,6 +287,8 @@ public QuarkusClassLoader createRuntimeClassLoader(QuarkusClassLoader loader,
         builder.setTransformerClassLoader(deploymentClassLoader);
         if (quarkusBootstrap.getApplicationRoot() != null) {
             builder.addElement(ClassPathElement.fromPath(quarkusBootstrap.getApplicationRoot()));
+        } else {
+            processCpElement(appModel.getAppArtifact(), element -> addCpElement(builder, appModel.getAppArtifact(), element));
         }
         builder.addElement(new MemoryClassPathElement(resources));