protected void filter(File sourceFile, File targetFile) throws MojoExecutionException { try { if (StringUtils.isEmpty(encoding)) { getLog() .warn( "File encoding has not been set, using platform encoding " + ReaderFactory.FILE_ENCODING + ", i.e. build is platform dependent!"); } targetFile.getParentFile().mkdirs(); final MavenResourcesExecution mre = new MavenResourcesExecution(); mre.setMavenProject(project); mre.setMavenSession(mavenSession); mre.setFilters(null); mre.setEscapedBackslashesInFilePath(true); final LinkedHashSet<String> delimiters = new LinkedHashSet<>(); delimiters.add("${*}"); mre.setDelimiters(delimiters); @SuppressWarnings("rawtypes") List filters = mavenFileFilter.getDefaultFilterWrappers(mre); mavenFileFilter.copyFile(sourceFile, targetFile, true, filters, encoding, true); } catch (MavenFilteringException e) { throw new MojoExecutionException(e.getMessage(), e); } }
private void copyAndInterpolate(File sourceDir, File destinationDir) throws MojoExecutionException { destinationDir.mkdirs(); getLog().debug("Copying and interpolating dir '" + sourceDir + "'"); try { DirectoryScanner scanner = new DirectoryScanner(); scanner.setBasedir(sourceDir); scanner.addDefaultExcludes(); scanner.scan(); String[] files = scanner.getIncludedFiles(); for (String file : files) { String extension = FileUtils.getExtension(file); File source = new File(sourceDir, file); File dest = new File(destinationDir, file); dest.getParentFile().mkdirs(); if (Arrays.asList("zip", "jar", "tar.gz").contains(extension)) { // just copy know binaries FileUtils.copyFile(source, dest); } else { mavenFileFilter.copyFile(source, dest, true, project, null, false, "UTF-8", session); } } } catch (MavenFilteringException e) { throw new MojoExecutionException("Failed to copy : " + sourceDir, e); } catch (IOException e) { throw new MojoExecutionException("Failed to copy : " + sourceDir, e); } }
private void merge(File originalFile, File extraContentFile, String type) throws MojoFailureException, MojoExecutionException { InputStream originalReader = null; InputStream extraContentReader = null; OutputStream originalWriter = null; try { String name = FileUtils.removeExtension(extraContentFile.getName()); String extension = FileUtils.getExtension(extraContentFile.getName()); if ("properties".equals(type)) { File tempFile = File.createTempFile(name, extension); mavenFileFilter.copyFile( extraContentFile, tempFile, true, project, null, true, "UTF-8", session); originalReader = new FileInputStream(originalFile); extraContentReader = new FileInputStream(tempFile); Properties original = new Properties(); original.load(originalReader); IOUtil.close(originalReader); originalWriter = new FileOutputStream(originalFile); Properties extra = new Properties(); extra.load(extraContentReader); IOUtil.close(extraContentReader); for (Object key : extra.keySet()) { original.put(key, extra.get(key)); } original.store(originalWriter, "Updated by EnvironmentMojo"); } else { throw new MojoFailureException("Invalid file type: " + type); } } catch (Exception e) { throw new MojoExecutionException( "Error merging files: Original '" + originalFile.getAbsolutePath() + "', extraContent '" + extraContentFile.getAbsolutePath() + "'.", e); } finally { IOUtil.close(originalReader); IOUtil.close(extraContentReader); IOUtil.close(originalWriter); } }
private void copyUrl(String sourceUrl, File destinationFile) throws MojoExecutionException { getLog().debug("Copying url '" + sourceUrl + "'"); String name = FileUtils.removeExtension(FileUtils.removePath(sourceUrl, '/')); String extension = FileUtils.getExtension(sourceUrl); try { destinationFile.getParentFile().mkdirs(); destinationFile.createNewFile(); File tempFile = File.createTempFile(name, extension); FileUtils.copyStreamToFile( new RawInputStreamFacade(getClass().getResourceAsStream(sourceUrl)), tempFile); mavenFileFilter.copyFile( tempFile, destinationFile, true, project, null, true, "UTF-8", session); tempFile.delete(); } catch (Exception e) { throw new MojoExecutionException( "Unable to copy resouce " + sourceUrl + " to " + name + "." + extension, e); } }