[
https://issues.apache.org/jira/browse/MASSEMBLY-832?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=17905190#comment-17905190
]
ASF GitHub Bot commented on MASSEMBLY-832:
------------------------------------------
elharo commented on code in PR #49:
URL:
https://github.com/apache/maven-assembly-plugin/pull/49#discussion_r1882167522
##########
src/main/mdo/assembly-component.mdo:
##########
@@ -568,6 +568,15 @@
build should be included in this dependency set. Default value is
false. (Since 2.2)
]]></description>
</field>
+ <field>
+ <name>useOptionalDependencies</name>
+ <version>2.1.0+</version>
+ <type>boolean</type>
Review Comment:
Is this a boolean or a list? What if someone wants to inlcude some optional
dependencies and not others?
##########
src/test/java/org/apache/maven/plugins/assembly/archive/task/AddDependencySetsTaskTest.java:
##########
@@ -425,6 +426,60 @@ public void
testGetDependencyArtifacts_ShouldFilterOneDependencyArtifactViaInclu
assertSame( am1, result.iterator().next() );
}
+ @Test
+ public void
testGetDependencyArtifacts_ShouldFilterOptionalArtifactsByDefault() throws
Exception
+ {
+ Artifact am1 = mockArtifact(1);
+ when(am1.isOptional()).thenReturn(true);
+ Artifact am2 = mockArtifact(2);
+ Set<Artifact> resolvedArtifacts = resolveDependencyArtifacts(new
DependencySet(), ImmutableSet.of(am1, am2));
+ assertEquals(1, resolvedArtifacts.size());
+ assertSame(am2, resolvedArtifacts.iterator().next());
+ }
+
+ @Test
+ public void
testGetDependencyArtifacts_ShouldFilterOptionalArtifactsExplicitly() throws
Exception
+ {
+ Artifact am1 = mockArtifact(1);
+ when(am1.isOptional()).thenReturn(true);
+ Artifact am2 = mockArtifact(2);
+ DependencySet dependencySet = new DependencySet();
+ dependencySet.setUseOptionalDependencies(false);
+
+ Set<Artifact> resolvedArtifacts =
resolveDependencyArtifacts(dependencySet, ImmutableSet.of(am1, am2));
+ assertEquals(1, resolvedArtifacts.size());
+ assertSame(am2, resolvedArtifacts.iterator().next());
+ }
+
+ @Test
+ public void
testGetDependencyArtifacts_ShouldNotFilterOptionalArtifactsExplicitly() throws
Exception
+ {
+ Artifact am1 = mockArtifact(1);
+ when(am1.isOptional()).thenReturn(true);
+ Artifact am2 = mockArtifact(2);
+ DependencySet dependencySet = new DependencySet();
+ dependencySet.setUseOptionalDependencies(true);
+
+ Set<Artifact> resolvedArtifacts =
resolveDependencyArtifacts(dependencySet, ImmutableSet.of(am1, am2));
+ assertEquals(2, resolvedArtifacts.size());
+ }
+
+ private static Artifact mockArtifact( int id )
+ {
+ Artifact a = mock(Artifact.class);
+ when(a.getId()).thenReturn("group:artifact" + id + ":1.0:jar");
+ return a;
+ }
+
+ private Set<Artifact> resolveDependencyArtifacts( DependencySet
dependencySet, Set<Artifact> artifacts ) throws Exception
+ {
+ MavenProject project = new MavenProject(new Model());
+ Logger logger = new ConsoleLogger(Logger.LEVEL_DEBUG, "test");
Review Comment:
no logging at all please. Use a SilentLogger
##########
src/main/mdo/assembly-component.mdo:
##########
@@ -568,6 +568,15 @@
build should be included in this dependency set. Default value is
false. (Since 2.2)
]]></description>
</field>
+ <field>
+ <name>useOptionalDependencies</name>
+ <version>2.1.0+</version>
+ <type>boolean</type>
+ <defaultValue>false</defaultValue>
Review Comment:
I wonder if the defallt here should be true to avoid changing existing
behavior.
> Consider dependency optional attribute when gather dependencies
> ---------------------------------------------------------------
>
> Key: MASSEMBLY-832
> URL: https://issues.apache.org/jira/browse/MASSEMBLY-832
> Project: Maven Assembly Plugin
> Issue Type: New Feature
> Components: dependencySet
> Affects Versions: 2.6
> Environment: Maven 3.3
> Reporter: Nikolas Falco
> Priority: Minor
>
> In some scenario we would like to have the opportunity to skip optional
> dependencies
> {code:xml}
> <assembly ...>
> <id>dist</id>
> <formats>
> <format>zip</format>
> </formats>
> <includeBaseDirectory>false</includeBaseDirectory>
> <moduleSets>
> <moduleSet>
> <!-- Enable access to all projects in the current multimodule build!
> -->
> <useAllReactorProjects>true</useAllReactorProjects>
> <binaries>
> <outputDirectory>3rdparty</outputDirectory>
> <unpack>false</unpack>
> <dependencySets>
> <dependencySet>
> <!-- option 1 -->
> <considerOptional>true</considerOptional>
> <!-- or option 2 -->
> <includes>
> <!-- groupId:artifactId:type[:classifier][:optional]:version
> -->
> <include>*:*:*:false:*</include>
> </includes>
> </dependencySet>
> </dependencySets>
> </binaries>
> </moduleSet>
> </moduleSets>
> </assembly>
> {code}
--
This message was sent by Atlassian Jira
(v8.20.10#820010)