@Override
  public Optional<AuthProperty> inferAuth(String registry) throws InferredAuthException {

    Server server = getServerFromMavenSettings(registry);
    if (server == null) {
      return Optional.empty();
    }

    SettingsDecryptionRequest request = new DefaultSettingsDecryptionRequest(server);
    SettingsDecryptionResult result = decrypter.decrypt(request);
    // Un-encrypted passwords are passed through, so a problem indicates a real issue.
    // If there are any ERROR or FATAL problems reported, then decryption failed.
    for (SettingsProblem problem : result.getProblems()) {
      if (problem.getSeverity() == SettingsProblem.Severity.ERROR
          || problem.getSeverity() == SettingsProblem.Severity.FATAL) {
        throw new InferredAuthException(
            "Unable to decrypt server(" + registry + ") info from settings.xml: " + problem);
      }
    }
    Server resultServer = result.getServer();

    String username = resultServer.getUsername();
    String password = resultServer.getPassword();

    return Optional.of(
        new AuthProperty() {

          @Override
          public String getUsername() {
            return username;
          }

          @Override
          public String getPassword() {
            return password;
          }

          @Override
          public String getAuthDescriptor() {
            return CREDENTIAL_SOURCE;
          }

          @Override
          public String getUsernameDescriptor() {
            return CREDENTIAL_SOURCE;
          }

          @Override
          public String getPasswordDescriptor() {
            return CREDENTIAL_SOURCE;
          }
        });
  }
Retrieves credentials for {@code registry} from Maven settings.

@param registry the registry
@return the auth info for the registry, or {@link Optional#empty} if none could be retrieved
jib-maven-plugin/src/main/java/com/google/cloud/tools/jib/maven/MavenSettingsServerCredentials.java