Repository: quarkusio/quarkus
Issue: Gradle: Cannot push containers to multiple repositories due to task caching

**Describe the bug**
Currently the `quarkus-container-image-jib` extension does not support multiple registry urls to push images to. Therefore I'm running the following command build & push images twice.
```
./gradlew assemble -Dquarkus.container-image.push=true -Dquarkus.container-image.registry=$REGISTRY -Dquarkus.container-image.username=$REGISTRY_USER -Dquarkus.container-image.password=$REGISTRY_PASSWORD
```

However, when you run the command the second time, with a different registry, it is not executed due to gradle task caching. I think the push task should either not be cached or it should check if the registry url has changed. 

**Expected behavior**
Running the build & push of jib container building with different registries should push the image to both registries.

**Actual behavior**
After the first run, the second time, the build&push task is seen as "UP TO DATE" by gradle and therefore not run for the second registry. 




Changed files:
devtools/gradle/src/main/java/io/quarkus/gradle/tasks/QuarkusBuild.java
integration-tests/gradle/src/test/java/io/quarkus/gradle/QuarkusPluginFunctionalTest.java

diff --git a/devtools/gradle/src/main/java/io/quarkus/gradle/tasks/QuarkusBuild.java b/devtools/gradle/src/main/java/io/quarkus/gradle/tasks/QuarkusBuild.java
index f2f857f5054..8b7493f00b8 100644
--- a/devtools/gradle/src/main/java/io/quarkus/gradle/tasks/QuarkusBuild.java
+++ b/devtools/gradle/src/main/java/io/quarkus/gradle/tasks/QuarkusBuild.java
@@ -1,6 +1,7 @@
 package io.quarkus.gradle.tasks;
 
 import java.io.File;
+import java.io.Serializable;
 import java.util.ArrayList;
 import java.util.Collections;
 import java.util.HashMap;
@@ -78,6 +79,29 @@ public FileCollection getClasspath() {
                 .plus(mainSourceSet.getResources());
     }
 
+    @Input
+    public Map<Object, Object> getQuarkusBuildSystemProperties() {
+        Map<Object, Object> quarkusSystemProperties = new HashMap<>();
+        for (Map.Entry<Object, Object> systemProperty : System.getProperties().entrySet()) {
+            if (systemProperty.getKey().toString().startsWith("quarkus.") &&
+                    systemProperty.getValue() instanceof Serializable) {
+                quarkusSystemProperties.put(systemProperty.getKey(), systemProperty.getValue());
+            }
+        }
+        return quarkusSystemProperties;
+    }
+
+    @Input
+    public Map<String, String> getQuarkusBuildEnvProperties() {
+        Map<String, String> quarkusEnvProperties = new HashMap<>();
+        for (Map.Entry<String, String> systemProperty : System.getenv().entrySet()) {
+            if (systemProperty.getKey() != null && systemProperty.getKey().startsWith("QUARKUS_")) {
+                quarkusEnvProperties.put(systemProperty.getKey(), systemProperty.getValue());
+            }
+        }
+        return quarkusEnvProperties;
+    }
+
     @OutputFile
     public File getRunnerJar() {
         return new File(getProject().getBuildDir(), extension().finalName() + "-runner.jar");
diff --git a/integration-tests/gradle/src/test/java/io/quarkus/gradle/QuarkusPluginFunctionalTest.java b/integration-tests/gradle/src/test/java/io/quarkus/gradle/QuarkusPluginFunctionalTest.java
index d7291434b4c..ed23140ec1c 100644
--- a/integration-tests/gradle/src/test/java/io/quarkus/gradle/QuarkusPluginFunctionalTest.java
+++ b/integration-tests/gradle/src/test/java/io/quarkus/gradle/QuarkusPluginFunctionalTest.java
@@ -133,6 +133,21 @@ public void canDetectOutputChangeWhenBuilding() throws Exception {
         assertThat(runnerJar).exists();
     }
 
+    @Test
+    public void canDetectSystemPropertyChangeWhenBuilding() throws Exception {
+        createProject(SourceType.JAVA);
+
+        BuildResult firstBuild = runGradleWrapper(projectRoot, "quarkusBuild", "--stacktrace");
+
+        assertThat(firstBuild.getTasks().get(":quarkusBuild")).isEqualTo(BuildResult.SUCCESS_OUTCOME);
+        assertThat(projectRoot.toPath().resolve("build").resolve("foo-1.0.0-SNAPSHOT-runner.jar")).exists();
+
+        BuildResult secondBuild = runGradleWrapper(projectRoot, "quarkusBuild", "-Dquarkus.package.type=fast-jar");
+
+        assertThat(secondBuild.getTasks().get(":quarkusBuild")).isEqualTo(BuildResult.SUCCESS_OUTCOME);
+        assertThat(projectRoot.toPath().resolve("build").resolve("quarkus-app")).exists();
+    }
+
     @Test
     public void canRunTest() throws Exception {
         createProject(SourceType.JAVA);