@SuppressWarnings("resource")
	public static List<File> untar(final File inFile, final File outputDir) {
		final List<File> untaredFiles = new LinkedList<>();
		InputStream is = null;
		TarArchiveInputStream debInputStream = null;
		try {
			is = new FileInputStream(inFile);
			debInputStream = (TarArchiveInputStream) new ArchiveStreamFactory().createArchiveInputStream("tar", is);
			TarArchiveEntry entry;
			while ((entry = (TarArchiveEntry) debInputStream.getNextEntry()) != null) {
				final File outputFile = new File(outputDir, entry.getName());
				if (entry.isDirectory()) {
					if (!outputFile.exists()) {
						if (!outputFile.mkdirs()) {
							throw new IllegalStateException(String.format("Couldn't create directory %s.",
									outputFile.getAbsolutePath()));
						}
					}
				} else {
					File parentFile = outputFile.getParentFile();
					if (!parentFile.exists()) {
						parentFile.mkdirs();
					}
					final OutputStream outputFileStream = new FileOutputStream(outputFile);
					try {
						IOUtils.copy(debInputStream, outputFileStream);
					} finally {
						IOUtils.closeQuietly(outputFileStream);
					}

					if (FilenameUtils.isExtension(outputFile.getName(), EXECUTABLE_EXTENSION)) {
						outputFile.setExecutable(true, true);
					}
					outputFile.setReadable(true);
					outputFile.setWritable(true, true);
				}
				untaredFiles.add(outputFile);
			}
		} catch (Exception e) {
			throw processException("Error while untar file", e);
		} finally {
			IOUtils.closeQuietly(is);
			IOUtils.closeQuietly(debInputStream);
		}
		return untaredFiles;
	}
Untar an input file into an output file.
The output file is created in the output folder, having the same name as
the input file, minus the '.tar' extension.

@param inFile    the input .tar file
@param outputDir the output directory file.
@return The {@link List} of {@link File}s with the untared content.
ngrinder-core/src/main/java/org/ngrinder/common/util/CompressionUtils.java