@Override
  public JibContainerBuilder createJibContainerBuilder(
      JavaContainerBuilder javaContainerBuilder, ContainerizingMode containerizingMode)
      throws IOException {
    try {
      if (isWarProject()) {
        Path war = getWarArtifact();
        Path explodedWarPath = tempDirectoryProvider.newDirectory();
        ZipUtil.unzip(war, explodedWarPath);
        return JavaContainerBuilderHelper.fromExplodedWar(
            javaContainerBuilder,
            explodedWarPath,
            getProjectDependencies().stream()
                .map(Artifact::getFile)
                .map(File::getName)
                .collect(Collectors.toSet()));
      }

      switch (containerizingMode) {
        case EXPLODED:
          // Add resources, and classes
          Path classesOutputDirectory = Paths.get(project.getBuild().getOutputDirectory());
          // Don't use Path.endsWith(), since Path works on path elements.
          Predicate<Path> isClassFile = path -> path.getFileName().toString().endsWith(".class");
          javaContainerBuilder
              .addResources(classesOutputDirectory, isClassFile.negate())
              .addClasses(classesOutputDirectory, isClassFile);
          break;

        case PACKAGED:
          // Add a JAR
          javaContainerBuilder.addToClasspath(getJarArtifact());
          break;

        default:
          throw new IllegalStateException("unknown containerizing mode: " + containerizingMode);
      }

      // Classify and add dependencies
      Map<LayerType, List<Path>> classifiedDependencies =
          classifyDependencies(project.getArtifacts(), getProjectDependencies());

      javaContainerBuilder.addDependencies(
          Preconditions.checkNotNull(classifiedDependencies.get(LayerType.DEPENDENCIES)));
      javaContainerBuilder.addSnapshotDependencies(
          Preconditions.checkNotNull(classifiedDependencies.get(LayerType.SNAPSHOT_DEPENDENCIES)));
      javaContainerBuilder.addProjectDependencies(
          Preconditions.checkNotNull(classifiedDependencies.get(LayerType.PROJECT_DEPENDENCIES)));
      return javaContainerBuilder.toContainerBuilder();

    } catch (IOException ex) {
      throw new IOException(
          "Obtaining project build output files failed; make sure you have "
              + (isPackageErrorMessage(containerizingMode) ? "packaged" : "compiled")
              + " your project "
              + "before trying to build the image. (Did you accidentally run \"mvn clean "
              + "jib:build\" instead of \"mvn clean "
              + (isPackageErrorMessage(containerizingMode) ? "package" : "compile")
              + " jib:build\"?)",
          ex);
    }
  }
Gets the major version number from a Java version string.

<p>Examples: {@code "1.7" -> 7, "1.8.0_161" -> 8, "10" -> 10, "11.0.1" -> 11}

@param versionString the string to convert
@return the major version number as an integer, or 0 if the string is invalid
jib-maven-plugin/src/main/java/com/google/cloud/tools/jib/maven/MavenProjectProperties.java