This is an automated email from the ASF dual-hosted git repository.
cziegeler pushed a commit to branch master
in repository
https://gitbox.apache.org/repos/asf/sling-slingfeature-maven-plugin.git
The following commit(s) were added to refs/heads/master by this push:
new 3e93661 SLING-7961 : Adjust feature file reading to latest state
3e93661 is described below
commit 3e936619ae0cbd088f55d4c2270c950abf4bb8c3
Author: Carsten Ziegeler <[email protected]>
AuthorDate: Mon Oct 1 10:43:17 2018 +0200
SLING-7961 : Adjust feature file reading to latest state
---
.../sling/feature/maven/FeatureProjectConfig.java | 32 +++++++++++++++++++++-
.../apache/sling/feature/maven/Preprocessor.java | 24 +++++++++-------
.../feature/maven/mojos/AbstractFeatureMojo.java | 26 ++++++++++++++++++
3 files changed, 71 insertions(+), 11 deletions(-)
diff --git
a/src/main/java/org/apache/sling/feature/maven/FeatureProjectConfig.java
b/src/main/java/org/apache/sling/feature/maven/FeatureProjectConfig.java
index 137b47d..1edc63c 100644
--- a/src/main/java/org/apache/sling/feature/maven/FeatureProjectConfig.java
+++ b/src/main/java/org/apache/sling/feature/maven/FeatureProjectConfig.java
@@ -22,8 +22,16 @@ public class FeatureProjectConfig {
public static final String CFG_FEATURES = "features";
+ public static final String CFG_FEATURES_INCLUDES = "featuresIncludes";
+
+ public static final String CFG_FEATURES_EXCLUDES = "featuresExcludes";
+
public static final String CFG_TEST_FEATURES = "testFeatures";
+ public static final String CFG_TEST_FEATURES_INCLUDES =
"testFeaturesIncludes";
+
+ public static final String CFG_TEST_FEATURES_EXCLUDES =
"testFeaturesExcludes";
+
public static final String CFG_SKIP_ADD_FEATURE_DEPENDENCIES =
"skipAddFeatureDependencies";
public static final String CFG_SKIP_ADD_TEST_FEATURE_DEPENDENCIES =
"skipAddTestFeatureDependencies";
@@ -37,10 +45,16 @@ public class FeatureProjectConfig {
public static final String DEFAULT_FEATURE_DIR = "src/main/features";
- public static final String DEFAULT_TEST_FEATURE_DIR =
"src/test/osgi/features";
+ public static final String DEFAULT_FEATURE_INCLUDES = "**/*.json";
+
+ public static final String DEFAULT_TEST_FEATURE_DIR = "src/test/features";
private final String featuresDirName;
+ private final String includes;
+
+ private final String excludes;
+
private final boolean skipAddDep;
private final String name;
@@ -67,11 +81,15 @@ public class FeatureProjectConfig {
final String defaultDir;
final String skipAddDepCfgName;
final String defaultSkipValue;
+ final String incCfgName;
+ final String exCfgName;
if ( test ) {
featuresDirCfgName = CFG_TEST_FEATURES;
defaultDir = DEFAULT_TEST_FEATURE_DIR;
this.scope = Artifact.SCOPE_TEST;
skipAddDepCfgName = CFG_SKIP_ADD_TEST_FEATURE_DEPENDENCIES;
+ incCfgName = CFG_TEST_FEATURES_INCLUDES;
+ exCfgName = CFG_TEST_FEATURES_EXCLUDES;
defaultSkipValue = "true";
this.name = "test feature";
this.skipAddJar =
"true".equals(ProjectHelper.getConfigValue(info.plugin,
CFG_SKIP_ADD_JAR_TO_TEST_FEATURE, "true"));
@@ -80,11 +98,15 @@ public class FeatureProjectConfig {
defaultDir = DEFAULT_FEATURE_DIR;
this.scope = Artifact.SCOPE_PROVIDED;
skipAddDepCfgName = CFG_SKIP_ADD_FEATURE_DEPENDENCIES;
+ incCfgName = CFG_FEATURES_INCLUDES;
+ exCfgName = CFG_FEATURES_EXCLUDES;
defaultSkipValue = "false";
this.name = "feature";
this.skipAddJar =
"true".equals(ProjectHelper.getConfigValue(info.plugin,
CFG_SKIP_ADD_JAR_TO_FEATURE, "true"));
}
this.featuresDirName = ProjectHelper.getConfigValue(info.plugin,
featuresDirCfgName, defaultDir);
+ this.includes = ProjectHelper.getConfigValue(info.plugin, incCfgName,
null);
+ this.excludes = ProjectHelper.getConfigValue(info.plugin, exCfgName,
null);
final String skipCfg = ProjectHelper.getConfigValue(info.plugin,
skipAddDepCfgName, defaultSkipValue);
this.skipAddDep = "true".equals(skipCfg.toLowerCase());
this.jarStartOrder = ProjectHelper.getConfigValue(info.plugin,
CFG_JAR_START_ORDER, null);
@@ -98,6 +120,14 @@ public class FeatureProjectConfig {
return this.featuresDirName;
}
+ public String getIncludes() {
+ return this.includes;
+ }
+
+ public String getExcludes() {
+ return this.excludes;
+ }
+
public boolean isSkipAddDependencies() {
return this.skipAddDep;
}
diff --git a/src/main/java/org/apache/sling/feature/maven/Preprocessor.java
b/src/main/java/org/apache/sling/feature/maven/Preprocessor.java
index 65e0d07..0ad4514 100644
--- a/src/main/java/org/apache/sling/feature/maven/Preprocessor.java
+++ b/src/main/java/org/apache/sling/feature/maven/Preprocessor.java
@@ -32,6 +32,7 @@ import java.util.stream.Collectors;
import org.apache.maven.model.Dependency;
import org.apache.maven.project.MavenProject;
+import org.apache.maven.shared.utils.io.DirectoryScanner;
import org.apache.sling.feature.Artifact;
import org.apache.sling.feature.ArtifactId;
import org.apache.sling.feature.Extension;
@@ -162,15 +163,18 @@ public class Preprocessor {
}
}
- private void scan(final List<File> files, final File dir) {
- for(final File f : dir.listFiles()) {
- if ( !f.getName().startsWith(".") ) {
- if ( f.isDirectory() ) {
- scan(files, f);
- } else if ( f.getName().endsWith(".json") ) {
- files.add(f);
- }
- }
+ private void scan(final List<File> files, final File dir, final String
includes, final String excludes) {
+ final DirectoryScanner scanner = new DirectoryScanner();
+ scanner.setBasedir(dir);
+ if ( includes != null ) {
+ scanner.setIncludes(includes.split(","));
+ }
+ if ( excludes != null ) {
+ scanner.setExcludes(excludes.split(","));
+ }
+ scanner.scan();
+ for(final String f : scanner.getIncludedFiles()) {
+ files.add(new File(dir, f));
}
}
@@ -238,7 +242,7 @@ public class Preprocessor {
if ( dir.exists() ) {
final Map<String, Feature> featureMap = new TreeMap<>();
final List<File> files = new ArrayList<>();
- scan(files, dir);
+ scan(files, dir, config.getIncludes(), config.getExcludes());
for(final File file : files) {
final StringBuilder sb = new StringBuilder();
diff --git
a/src/main/java/org/apache/sling/feature/maven/mojos/AbstractFeatureMojo.java
b/src/main/java/org/apache/sling/feature/maven/mojos/AbstractFeatureMojo.java
index 51bed52..2ac07a7 100644
---
a/src/main/java/org/apache/sling/feature/maven/mojos/AbstractFeatureMojo.java
+++
b/src/main/java/org/apache/sling/feature/maven/mojos/AbstractFeatureMojo.java
@@ -40,6 +40,19 @@ public abstract class AbstractFeatureMojo extends
AbstractMojo {
protected File features;
/**
+ * Comma separated list of includes
+ */
+ @Parameter(name = FeatureProjectConfig.CFG_FEATURES_INCLUDES,
+ defaultValue = FeatureProjectConfig.DEFAULT_FEATURE_INCLUDES)
+ private String featuresIncludes;
+
+ /**
+ * Comma separated list of excludes
+ */
+ @Parameter(name = FeatureProjectConfig.CFG_FEATURES_EXCLUDES)
+ private String featuresExcludes;
+
+ /**
* Directory containing test feature files
*/
@Parameter(name = FeatureProjectConfig.CFG_TEST_FEATURES,
@@ -48,6 +61,19 @@ public abstract class AbstractFeatureMojo extends
AbstractMojo {
private File testFeatures;
/**
+ * Comma separated list of includes
+ */
+ @Parameter(name = FeatureProjectConfig.CFG_TEST_FEATURES_INCLUDES,
+ defaultValue = FeatureProjectConfig.DEFAULT_FEATURE_INCLUDES)
+ private String testFeaturesIncludes;
+
+ /**
+ * Comma separated list of excludes
+ */
+ @Parameter(name = FeatureProjectConfig.CFG_TEST_FEATURES_EXCLUDES)
+ private String testFeaturesExcludes;
+
+ /**
* If set to {@code true} the artifacts from the feature are not as
dependencies to the project.
*/
@Parameter(name=FeatureProjectConfig.CFG_SKIP_ADD_FEATURE_DEPENDENCIES,