use of org.codehaus.plexus.util.DirectoryScanner in project alfresco-maven by Acosix.
the class DuplicateI18nResourcesMojo method getPropertyFileNamesToProcess.
protected List<String> getPropertyFileNamesToProcess() {
final List<String> propertyFileNames = new ArrayList<>();
final DirectoryScanner scanner = new DirectoryScanner();
scanner.setBasedir(this.sourceDirectory);
if (this.includes != null) {
scanner.setIncludes(this.includes.toArray(new String[0]));
} else {
scanner.setIncludes(DEFAULT_INCLUDES.toArray(new String[0]));
}
if (this.excludes != null) {
scanner.setExcludes(this.excludes.toArray(new String[0]));
}
scanner.addDefaultExcludes();
scanner.scan();
for (final String includedFile : scanner.getIncludedFiles()) {
propertyFileNames.add(includedFile);
}
return propertyFileNames;
}
use of org.codehaus.plexus.util.DirectoryScanner in project providence by morimekta.
the class BaseGenerateSourcesMojo method addDependencyInclude.
private void addDependencyInclude(File workingDir, Set<File> includes, Artifact artifact) throws MojoExecutionException {
// TODO: Figure out if this is the right way to name the output directories.
File outputDir = new File(workingDir, artifact.getGroupId().replaceAll("[.]", Strings.escape(File.separator)) + File.separator + artifact.getArtifactId());
if (!outputDir.exists()) {
if (!outputDir.mkdirs()) {
throw new MojoExecutionException("Unable to create output dir " + outputDir);
}
}
if (artifact.getFile().isDirectory()) {
// Otherwise the dependency is a local module, and not packaged.
// In this case the we need to try to find thrift files in the
// file tree under that directly.
DirectoryScanner includeScanner = new DirectoryScanner();
includeScanner.setBasedir(artifact.getFile());
// Include basically everything.
includeScanner.setIncludes(new String[] { "**/*.*" });
// Skip basic java files. These cannot be used as includes anyway, and
// is the most common content of the default artifacts.
includeScanner.setExcludes(new String[] { "**/*.class", "**/*.java", "**/*.properties" });
includeScanner.scan();
try {
for (String filePath : includeScanner.getIncludedFiles()) {
if (ReflectionUtils.isThriftFile(filePath)) {
Path file = Paths.get(project.getBasedir().getAbsolutePath(), filePath);
File of = new File(outputDir, new File(filePath).getName());
try (FileOutputStream fos = new FileOutputStream(of, false);
BufferedOutputStream bos = new BufferedOutputStream(fos)) {
Files.copy(file, bos);
}
}
}
includes.add(outputDir);
} catch (IOException e) {
throw new MojoExecutionException("" + e.getMessage(), e);
}
} else {
try (FileInputStream fis = new FileInputStream(artifact.getFile());
BufferedInputStream bis = new BufferedInputStream(fis);
ZipInputStream zis = new ZipInputStream(bis)) {
ZipEntry entry;
while ((entry = zis.getNextEntry()) != null) {
if (entry.isDirectory() || !ReflectionUtils.isThriftFile(entry.getName())) {
zis.closeEntry();
continue;
}
File of = new File(outputDir, new File(entry.getName()).getName());
try (FileOutputStream fos = new FileOutputStream(of, false);
BufferedOutputStream bos = new BufferedOutputStream(fos)) {
IOUtils.copy(zis, bos);
}
zis.closeEntry();
}
includes.add(outputDir);
} catch (IOException e) {
throw new MojoExecutionException("" + e.getMessage(), e);
}
}
}
use of org.codehaus.plexus.util.DirectoryScanner in project providence by morimekta.
the class BaseGenerateSourcesMojo method executeInternal.
boolean executeInternal(IncludeExcludeFileSelector includeDirs, File outputDir, IncludeExcludeFileSelector inputSelector, String defaultInputIncludes, boolean testCompile) throws MojoExecutionException, MojoFailureException {
Set<File> inputFiles = ProvidenceInput.getInputFiles(project, inputSelector, defaultInputIncludes, print_debug, getLog());
if (inputFiles.isEmpty()) {
return false;
}
if (!outputDir.exists()) {
if (!outputDir.mkdirs()) {
throw new MojoExecutionException("Unable to create target directory " + outputDir);
}
}
TreeSet<File> includes = new TreeSet<>();
File workingDir = new File(buildDir, testCompile ? "providence-test" : "providence");
File[] deleteFiles = workingDir.listFiles();
if (!workingDir.exists()) {
if (!workingDir.mkdirs()) {
throw new MojoExecutionException("Unable to create working directory " + workingDir);
}
} else if (deleteFiles != null) {
StreamSupport.<File>stream(Spliterators.spliterator(deleteFiles, Spliterator.DISTINCT | Spliterator.IMMUTABLE), false).forEach(File::delete);
}
Set<Artifact> resolvedArtifacts = new HashSet<>();
for (Dependency dep : dependencies) {
if (testCompile || !TEST.equalsIgnoreCase(dep.getScope())) {
resolveDependency(dep, includes, workingDir, resolvedArtifacts);
}
}
if (includeDirs != null) {
DirectoryScanner includeScanner = new DirectoryScanner();
includeScanner.setIncludes(includeDirs.getIncludes());
if (includeDirs.getExcludes() != null) {
includeScanner.setExcludes(includeDirs.getExcludes());
}
includeScanner.setBasedir(project.getBasedir());
includeScanner.scan();
for (String dir : includeScanner.getIncludedDirectories()) {
includes.add(new File(project.getBasedir(), dir));
}
for (String dir : includeScanner.getExcludedDirectories()) {
includes.remove(new File(project.getBasedir(), dir));
}
}
FileManager fileManager = new FileManager(outputDir);
ProgramParser parser = new ThriftProgramParser(require_field_id, require_enum_value, allow_language_reserved_names);
TypeLoader loader = new TypeLoader(includes, parser);
if (print_debug) {
inputFiles.stream().filter(Objects::nonNull).map(file -> {
try {
return file.getAbsoluteFile().getCanonicalPath();
} catch (IOException e) {
e.printStackTrace();
return null;
}
}).sorted().forEach(f -> getLog().info("Compiling: " + f));
}
JavaOptions javaOptions = new JavaOptions();
javaOptions.android = android;
javaOptions.jackson = jackson;
javaOptions.rw_binary = rw_binary;
javaOptions.hazelcast_portable = hazelcast_portable;
javaOptions.generated_annotation_version = generated_annotation_version;
javaOptions.public_constructors = public_constructors;
GeneratorOptions generatorOptions = new GeneratorOptions();
generatorOptions.generator_program_name = "providence-maven-plugin";
generatorOptions.program_version = getVersionString();
GeneratorFactory factory = new JavaGeneratorFactory();
Generator generator = new JavaGenerator(fileManager, generatorOptions, javaOptions);
Path base = project.getBasedir().toPath().toAbsolutePath();
if (project.getParent() != null && project.getParent().getBasedir() != null) {
// Only replace with parent if parent is a parent directory of this.
Path parentBase = project.getParent().getBasedir().toPath().toAbsolutePath();
if (base.toString().startsWith(parentBase.toString())) {
base = parentBase;
}
}
for (File in : inputFiles) {
ProgramTypeRegistry registry;
try {
registry = loader.load(in);
} catch (SerializerException e) {
// ParseException is a SerializerException. And serialize exceptions can come from
// failing to make sense of constant definitions.
getLog().error(" ============ >> PROVIDENCE << ============");
getLog().error("");
Arrays.stream(e.asString().split("\r?\n")).forEach(l -> getLog().error(l));
getLog().error("");
getLog().error(" ============ << PROVIDENCE >> ============");
throw new MojoFailureException("Failed to parse thrift file: " + in.getName(), e);
} catch (IOException e) {
throw new MojoExecutionException("Failed to read thrift file: " + in.getName(), e);
}
try {
if (skipIfMissingNamespace && registry.getProgram().getNamespaceForLanguage(factory.generatorName()) == null) {
getLog().warn("Skipping (no " + factory.generatorName() + " namespace) " + base.relativize(in.toPath()));
continue;
}
generator.generate(registry);
} catch (GeneratorException e) {
throw new MojoFailureException("Failed to generate program: " + registry.getProgram().getProgramName(), e);
} catch (IOException e) {
throw new MojoExecutionException("Failed to write program file: " + registry.getProgram().getProgramName(), e);
}
}
try {
generator.generateGlobal(loader.getProgramRegistry(), inputFiles);
} catch (GeneratorException e) {
throw new MojoFailureException("Failed to generate global", e);
} catch (IOException e) {
throw new MojoExecutionException("Failed to write global file", e);
}
return compileOutput;
}
use of org.codehaus.plexus.util.DirectoryScanner in project tycho by eclipse.
the class IncludeValidationHelper method checkIncludesExist.
private void checkIncludesExist(String buildPropertiesKey, List<String> includePatterns, MavenProject project, boolean strict, String... ignoredIncludes) throws MojoExecutionException {
File baseDir = project.getBasedir();
List<String> nonMatchingIncludes = new ArrayList<>();
List<String> ignoreList = Arrays.asList(ignoredIncludes);
if (includePatterns == null || includePatterns.isEmpty()) {
String message = new File(baseDir, "build.properties").getAbsolutePath() + ": " + buildPropertiesKey + " value(s) must be specified.";
if (strict) {
throw new MojoExecutionException(message);
} else {
log.warn(message);
}
}
for (String includePattern : includePatterns) {
if (ignoreList.contains(includePattern)) {
continue;
}
if (new File(baseDir, includePattern).exists()) {
continue;
}
// it does not exist as a file nor dir. Try if it matches any files as ant pattern
DirectoryScanner scanner = new DirectoryScanner();
scanner.setIncludes(new String[] { includePattern });
scanner.setBasedir(baseDir);
scanner.scan();
if (scanner.getIncludedFiles().length == 0) {
nonMatchingIncludes.add(includePattern);
}
}
if (nonMatchingIncludes.size() > 0) {
String message = new File(baseDir, "build.properties").getAbsolutePath() + ": " + buildPropertiesKey + " value(s) " + nonMatchingIncludes + " do not match any files.";
if (strict) {
throw new MojoExecutionException(message);
} else {
log.warn(message);
}
}
}
use of org.codehaus.plexus.util.DirectoryScanner in project tycho by eclipse.
the class ProductExportMojo method copyDirectory.
private void copyDirectory(File source, File target, String excludes) throws IOException {
DirectoryScanner ds = new DirectoryScanner();
ds.setBasedir(source);
ds.setExcludes(new String[] { excludes });
ds.scan();
for (String relPath : ds.getIncludedFiles()) {
File targetFile = new File(target, relPath);
targetFile.getParentFile().mkdirs();
FileUtils.copyFile(new File(source, relPath), targetFile);
}
}
Aggregations