|
35 | 35 | import java.nio.file.Path; |
36 | 36 | import java.nio.file.Paths; |
37 | 37 | import java.util.ArrayList; |
| 38 | +import java.util.Arrays; |
38 | 39 | import java.util.Collections; |
39 | 40 | import java.util.LinkedHashMap; |
40 | 41 | import java.util.List; |
|
52 | 53 | import org.apache.maven.plugin.MojoExecutionException; |
53 | 54 | import org.apache.maven.plugins.annotations.Parameter; |
54 | 55 | import org.apache.maven.project.MavenProject; |
| 56 | +import org.apache.maven.shared.artifact.filter.resolve.AbstractFilter; |
| 57 | +import org.apache.maven.shared.artifact.filter.resolve.AndFilter; |
| 58 | +import org.apache.maven.shared.artifact.filter.resolve.Node; |
| 59 | +import org.apache.maven.shared.artifact.filter.resolve.ScopeFilter; |
| 60 | +import org.apache.maven.shared.artifact.filter.resolve.TransformableFilter; |
55 | 61 | import org.codehaus.plexus.interpolation.EnvarBasedValueSource; |
56 | 62 | import org.codehaus.plexus.interpolation.ObjectBasedValueSource; |
57 | 63 | import org.codehaus.plexus.interpolation.PrefixAwareRecursionInterceptor; |
|
68 | 74 | * |
69 | 75 | * @author Johannes Schindelin |
70 | 76 | * @author Curtis Rueden |
| 77 | + * @author Philipp Hanslovsky |
71 | 78 | */ |
72 | 79 | public abstract class AbstractInstallMojo extends AbstractMojo { |
73 | 80 |
|
@@ -123,6 +130,7 @@ public abstract class AbstractInstallMojo extends AbstractMojo { |
123 | 130 | protected static final String DELETE_OTHER_VERSIONS_POLICY_PROPERTY = "scijava.deleteOtherVersions"; |
124 | 131 | protected static final String SUBDIRECTORY_PATTERNS_PROPERTY = "scijava.subdirectoryPatterns"; |
125 | 132 | protected static final String IGNORE_DEPENDENCIES_PROPERTY = "scijava.ignoreDependencies"; |
| 133 | + protected static final String IGNORE_OPTIONAL_DEPENDENCIES_PROPERTY = "scijava.ignoreOptionalDependencies"; |
126 | 134 |
|
127 | 135 | public enum OtherVersions { |
128 | 136 | always, older, never |
@@ -261,6 +269,29 @@ else if (newerVersion) { |
261 | 269 | } |
262 | 270 | } |
263 | 271 |
|
| 272 | + protected static TransformableFilter makeTransformableFilterDefaultExclusions( |
| 273 | + final boolean ignoreOptionalDependencies) { |
| 274 | + return makeTransformableFilter(ignoreOptionalDependencies, "system", "provided", "test"); |
| 275 | + } |
| 276 | + |
| 277 | + protected static TransformableFilter makeTransformableFilter( |
| 278 | + final boolean ignoreOptionalDependencies, |
| 279 | + String... excludedScopes) { |
| 280 | + TransformableFilter scopeFilter = ScopeFilter.excluding(excludedScopes); |
| 281 | + if (ignoreOptionalDependencies) { |
| 282 | + TransformableFilter notOptionalFilter = new AbstractFilter() { |
| 283 | + @Override |
| 284 | + public boolean accept(Node node, List<Node> parents) { |
| 285 | + return !node.getDependency().isOptional(); |
| 286 | + } |
| 287 | + }; |
| 288 | + return new AndFilter(Arrays.asList(scopeFilter, notOptionalFilter)); |
| 289 | + } |
| 290 | + else { |
| 291 | + return scopeFilter; |
| 292 | + } |
| 293 | + } |
| 294 | + |
264 | 295 | private static String versionToString(final String v) { |
265 | 296 | return v == null || v.isEmpty() ? "(none)" : v; |
266 | 297 | } |
|
0 commit comments