[ https://issues.apache.org/jira/browse/SLING-8058?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]
Carsten Ziegeler reassigned SLING-8058: --------------------------------------- Assignee: Carsten Ziegeler > Make configuration of slingfeature-maven-plugin consistent > ---------------------------------------------------------- > > Key: SLING-8058 > URL: https://issues.apache.org/jira/browse/SLING-8058 > Project: Sling > Issue Type: Improvement > Components: Feature Model, Maven Plugins and Archetypes > Reporter: Carsten Ziegeler > Assignee: Carsten Ziegeler > Priority: Major > Fix For: slingfeature-maven-plugin 1.0.0 > > > The slingfeature-maven-plugin as 2 goals: aggregate-features and repository > that both have slightly different ways of selecting included features. Then > it's also possibly to select via includes at the top level configuration of > the feature. > The top-level includes specifies the initial set of feature files used, the > other goals can then refine this subset. > We should make these consistent. > They should have the same way to: > 1. include/exclude feature files from the total set > 2. refer to a feature file in a maven repository > 3. refer to an aggregated feature done in the same pom, e.g. by just > referring to its classifier, e.g. <aggregateClassifier> > The code that handles this should probably be shared in the ProjectHelper and > it might make sense to create a new shared parent base class, e.g. > AbstractIncludingFeatureMojo extends AbstractFeatureMojo to hold the fields > or something like this. > The way it works is: > * The plugin is configured with a directory (features parameter), includes > and excludes for that directory (featuresIncludes, featuresExcludes > parameters) - all of these are defined in the AbstractFeatureMojo > * There is a similar set for testing features in the AbstractFeatureMojo > * The DependencyLifecycleParticipant for the plugin triggers the Preprocessor > which uses all of the above information to create the set of available > features for this project, let's call it the global set of features > * The global set of features is the set of features every mojo should use. > The mojo gets them through the ProjectHelper > * The above mechanism should stay as is and as the Preprocessor is the only > one reading the above mentioned parameters, they are private and not to be > used by any mojo directly > * The aggregate and the repository mojo (and potentially more mojos in the > future) use the above created global set of features and *further* filter it > using includes and excludes. These are additional includes/excludes that only > work on this global set, therefore they should not be part of the > AbstractFeatureMojo > * All these mojos (aggregate and repository) should use the same > configuration and work similar with selecting features > * It makes sense to create a new abstract class to unify this selection, this > abstract class would inherit from AbstractFeatureMojo, add the additional > includes/excludes handling and be used by the mojos like the aggregate and > the repository mojo > I suggest we use the following general configuration format. > For includes, excludes of files from the current projects > {noformat} > <featureFiles> > <include>base.json</include> > <include>something/*.json</include> > <exclude>something/badfile.json</exclude> > </featureFiles> > {noformat} > For features from external projects > {noformat} > <featureArtifact> > </groupId></artifactId>etc. > </featureArtifact> > {noformat} > For aggregates from the same project > {noformat} > <aggregateFeature>CLASSIFIER_NAME</aggregateFeature> > {noformat} > The configuration for the aggregate mojo is then: > {noformat} > <aggregate> > <featureFiles/>* > <featureArtifact>* > <aggregateFeature>* > </aggregate> > {noformat} > The configuration for the repository mojo becomes similarly: > {noformat} > <repository> > <featureFiles/>* > <featureArtifact>* > <aggregateFeature>* > <artifact>* > </repository> > {noformat} > Note that the repository mojo gets an additional configuration for artifacts > to be added to the repository, these are not features -- This message was sent by Atlassian JIRA (v7.6.3#76005)