You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@maven.apache.org by kh...@apache.org on 2020/01/04 10:50:04 UTC
[maven-shade-plugin] 01/01: [MSHADE-311] - Don't add exclusions for
provided dep
This is an automated email from the ASF dual-hosted git repository.
khmarbaise pushed a commit to branch famod-MSHADE-311-dep-red-pom-excludes
in repository https://gitbox.apache.org/repos/asf/maven-shade-plugin.git
commit be199e2c86cd170ab0b76fd7ac885db0b037b7ac
Author: Falko Modler <fa...@users.noreply.github.com>
AuthorDate: Fri Jan 3 15:51:42 2020 +0100
[MSHADE-311] - Don't add exclusions for provided dep
---
.../pom.xml | 105 +++++++++++++++++++++
.../apache/maven/its/shade/drpape/a/0.1/a-0.1.jar | Bin 0 -> 2020 bytes
.../apache/maven/its/shade/drpape/a/0.1/a-0.1.pom | 40 ++++++++
.../apache/maven/its/shade/drpape/b/0.1/b-0.1.jar | Bin 0 -> 2053 bytes
.../apache/maven/its/shade/drpape/b/0.1/b-0.1.pom | 48 ++++++++++
.../apache/maven/its/shade/drpape/c/0.1/c-0.1.jar | Bin 0 -> 2019 bytes
.../apache/maven/its/shade/drpape/c/0.1/c-0.1.pom | 40 ++++++++
.../apache/maven/its/shade/drpape/d/0.1/d-0.1.jar | Bin 0 -> 2053 bytes
.../apache/maven/its/shade/drpape/d/0.1/d-0.1.pom | 48 ++++++++++
.../apache/maven/its/shade/drpape/e/0.1/e-0.1.jar | Bin 0 -> 2020 bytes
.../apache/maven/its/shade/drpape/e/0.1/e-0.1.pom | 40 ++++++++
.../verify.groovy | 40 ++++++++
.../apache/maven/plugins/shade/mojo/ShadeMojo.java | 6 +-
13 files changed, 366 insertions(+), 1 deletion(-)
diff --git a/src/it/dep-reduced-pom-artifactset-provided-excludes/pom.xml b/src/it/dep-reduced-pom-artifactset-provided-excludes/pom.xml
new file mode 100644
index 0000000..cc862c5
--- /dev/null
+++ b/src/it/dep-reduced-pom-artifactset-provided-excludes/pom.xml
@@ -0,0 +1,105 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<!--
+Licensed to the Apache Software Foundation (ASF) under one
+or more contributor license agreements. See the NOTICE file
+distributed with this work for additional information
+regarding copyright ownership. The ASF licenses this file
+to you under the Apache License, Version 2.0 (the
+"License"); you may not use this file except in compliance
+with the License. You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+Unless required by applicable law or agreed to in writing,
+software distributed under the License is distributed on an
+"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+KIND, either express or implied. See the License for the
+specific language governing permissions and limitations
+under the License.
+-->
+
+<project>
+ <modelVersion>4.0.0</modelVersion>
+
+ <groupId>org.apache.maven.its.shade.drpape</groupId>
+ <artifactId>test</artifactId>
+ <version>1.0</version>
+ <packaging>jar</packaging>
+
+ <name>MSHADE-311</name>
+ <description>
+ Tests that creation of the dependency reduced POM does not create excludes for a provided transitive dependency.
+ This dependency 'c' is a compile dependency of 'b' which is a provided dependency of this project.
+ Shade-plugin is configured to only include (compile) dependency 'a', not 'b' (which must therefore be retained).
+ Additionally (to prevent regressions), this project has a provided dependency 'd' which depends on 'e', but 'e' is excluded.
+ That exclusion must be retained in the dependency reduced POM.
+ </description>
+
+ <repositories>
+ <repository>
+ <id>shade-it</id>
+ <url>file:///${basedir}/repo</url>
+ <releases>
+ <checksumPolicy>ignore</checksumPolicy>
+ </releases>
+ <snapshots>
+ <enabled>false</enabled>
+ </snapshots>
+ </repository>
+ </repositories>
+
+ <dependencies>
+ <dependency>
+ <groupId>org.apache.maven.its.shade.drpape</groupId>
+ <artifactId>a</artifactId>
+ <version>0.1</version>
+ </dependency>
+ <dependency>
+ <groupId>org.apache.maven.its.shade.drpape</groupId>
+ <artifactId>b</artifactId>
+ <version>0.1</version>
+ <scope>provided</scope>
+ </dependency>
+ <dependency>
+ <groupId>org.apache.maven.its.shade.drpape</groupId>
+ <artifactId>d</artifactId>
+ <version>0.1</version>
+ <scope>provided</scope>
+ <exclusions>
+ <exclusion>
+ <groupId>org.apache.maven.its.shade.drpape</groupId>
+ <artifactId>e</artifactId>
+ </exclusion>
+ </exclusions>
+ </dependency>
+ </dependencies>
+
+ <build>
+ <plugins>
+ <plugin>
+ <groupId>org.apache.maven.plugins</groupId>
+ <artifactId>maven-shade-plugin</artifactId>
+ <version>@project.version@</version>
+ <executions>
+ <execution>
+ <id>attach-shade</id>
+ <phase>package</phase>
+ <goals>
+ <goal>shade</goal>
+ </goals>
+ <configuration>
+ <createDependencyReducedPom>true</createDependencyReducedPom>
+ <dependencyReducedPomLocation>target/dependency-reduced-pom.xml</dependencyReducedPomLocation>
+ <artifactSet>
+ <includes>
+ <include>org.apache.maven.its.shade.drpape:a</include>
+ </includes>
+ </artifactSet>
+ </configuration>
+ </execution>
+ </executions>
+ </plugin>
+ </plugins>
+ </build>
+</project>
diff --git a/src/it/dep-reduced-pom-artifactset-provided-excludes/repo/org/apache/maven/its/shade/drpape/a/0.1/a-0.1.jar b/src/it/dep-reduced-pom-artifactset-provided-excludes/repo/org/apache/maven/its/shade/drpape/a/0.1/a-0.1.jar
new file mode 100644
index 0000000..484889c
Binary files /dev/null and b/src/it/dep-reduced-pom-artifactset-provided-excludes/repo/org/apache/maven/its/shade/drpape/a/0.1/a-0.1.jar differ
diff --git a/src/it/dep-reduced-pom-artifactset-provided-excludes/repo/org/apache/maven/its/shade/drpape/a/0.1/a-0.1.pom b/src/it/dep-reduced-pom-artifactset-provided-excludes/repo/org/apache/maven/its/shade/drpape/a/0.1/a-0.1.pom
new file mode 100644
index 0000000..c943daa
--- /dev/null
+++ b/src/it/dep-reduced-pom-artifactset-provided-excludes/repo/org/apache/maven/its/shade/drpape/a/0.1/a-0.1.pom
@@ -0,0 +1,40 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<!--
+Licensed to the Apache Software Foundation (ASF) under one
+or more contributor license agreements. See the NOTICE file
+distributed with this work for additional information
+regarding copyright ownership. The ASF licenses this file
+to you under the Apache License, Version 2.0 (the
+"License"); you may not use this file except in compliance
+with the License. You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+Unless required by applicable law or agreed to in writing,
+software distributed under the License is distributed on an
+"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+KIND, either express or implied. See the License for the
+specific language governing permissions and limitations
+under the License.
+-->
+
+<project>
+ <modelVersion>4.0.0</modelVersion>
+
+ <groupId>org.apache.maven.its.shade.drpape</groupId>
+ <artifactId>a</artifactId>
+ <version>0.1</version>
+ <packaging>jar</packaging>
+
+ <properties>
+ <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
+ </properties>
+
+ <distributionManagement>
+ <repository>
+ <id>maven-core-it</id>
+ <url>file:///${basedir}/repo</url>
+ </repository>
+ </distributionManagement>
+</project>
diff --git a/src/it/dep-reduced-pom-artifactset-provided-excludes/repo/org/apache/maven/its/shade/drpape/b/0.1/b-0.1.jar b/src/it/dep-reduced-pom-artifactset-provided-excludes/repo/org/apache/maven/its/shade/drpape/b/0.1/b-0.1.jar
new file mode 100644
index 0000000..c982180
Binary files /dev/null and b/src/it/dep-reduced-pom-artifactset-provided-excludes/repo/org/apache/maven/its/shade/drpape/b/0.1/b-0.1.jar differ
diff --git a/src/it/dep-reduced-pom-artifactset-provided-excludes/repo/org/apache/maven/its/shade/drpape/b/0.1/b-0.1.pom b/src/it/dep-reduced-pom-artifactset-provided-excludes/repo/org/apache/maven/its/shade/drpape/b/0.1/b-0.1.pom
new file mode 100644
index 0000000..09cb49b
--- /dev/null
+++ b/src/it/dep-reduced-pom-artifactset-provided-excludes/repo/org/apache/maven/its/shade/drpape/b/0.1/b-0.1.pom
@@ -0,0 +1,48 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<!--
+Licensed to the Apache Software Foundation (ASF) under one
+or more contributor license agreements. See the NOTICE file
+distributed with this work for additional information
+regarding copyright ownership. The ASF licenses this file
+to you under the Apache License, Version 2.0 (the
+"License"); you may not use this file except in compliance
+with the License. You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+Unless required by applicable law or agreed to in writing,
+software distributed under the License is distributed on an
+"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+KIND, either express or implied. See the License for the
+specific language governing permissions and limitations
+under the License.
+-->
+
+<project>
+ <modelVersion>4.0.0</modelVersion>
+
+ <groupId>org.apache.maven.its.shade.drpape</groupId>
+ <artifactId>b</artifactId>
+ <version>0.1</version>
+ <packaging>jar</packaging>
+
+ <properties>
+ <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
+ </properties>
+
+ <dependencies>
+ <dependency>
+ <groupId>org.apache.maven.its.shade.drpape</groupId>
+ <artifactId>c</artifactId>
+ <version>0.1</version>
+ </dependency>
+ </dependencies>
+
+ <distributionManagement>
+ <repository>
+ <id>maven-core-it</id>
+ <url>file:///${basedir}/repo</url>
+ </repository>
+ </distributionManagement>
+</project>
diff --git a/src/it/dep-reduced-pom-artifactset-provided-excludes/repo/org/apache/maven/its/shade/drpape/c/0.1/c-0.1.jar b/src/it/dep-reduced-pom-artifactset-provided-excludes/repo/org/apache/maven/its/shade/drpape/c/0.1/c-0.1.jar
new file mode 100644
index 0000000..520a93d
Binary files /dev/null and b/src/it/dep-reduced-pom-artifactset-provided-excludes/repo/org/apache/maven/its/shade/drpape/c/0.1/c-0.1.jar differ
diff --git a/src/it/dep-reduced-pom-artifactset-provided-excludes/repo/org/apache/maven/its/shade/drpape/c/0.1/c-0.1.pom b/src/it/dep-reduced-pom-artifactset-provided-excludes/repo/org/apache/maven/its/shade/drpape/c/0.1/c-0.1.pom
new file mode 100644
index 0000000..49d9dea
--- /dev/null
+++ b/src/it/dep-reduced-pom-artifactset-provided-excludes/repo/org/apache/maven/its/shade/drpape/c/0.1/c-0.1.pom
@@ -0,0 +1,40 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<!--
+Licensed to the Apache Software Foundation (ASF) under one
+or more contributor license agreements. See the NOTICE file
+distributed with this work for additional information
+regarding copyright ownership. The ASF licenses this file
+to you under the Apache License, Version 2.0 (the
+"License"); you may not use this file except in compliance
+with the License. You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+Unless required by applicable law or agreed to in writing,
+software distributed under the License is distributed on an
+"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+KIND, either express or implied. See the License for the
+specific language governing permissions and limitations
+under the License.
+-->
+
+<project>
+ <modelVersion>4.0.0</modelVersion>
+
+ <groupId>org.apache.maven.its.shade.drpape</groupId>
+ <artifactId>c</artifactId>
+ <version>0.1</version>
+ <packaging>jar</packaging>
+
+ <properties>
+ <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
+ </properties>
+
+ <distributionManagement>
+ <repository>
+ <id>maven-core-it</id>
+ <url>file:///${basedir}/repo</url>
+ </repository>
+ </distributionManagement>
+</project>
diff --git a/src/it/dep-reduced-pom-artifactset-provided-excludes/repo/org/apache/maven/its/shade/drpape/d/0.1/d-0.1.jar b/src/it/dep-reduced-pom-artifactset-provided-excludes/repo/org/apache/maven/its/shade/drpape/d/0.1/d-0.1.jar
new file mode 100644
index 0000000..2ad59eb
Binary files /dev/null and b/src/it/dep-reduced-pom-artifactset-provided-excludes/repo/org/apache/maven/its/shade/drpape/d/0.1/d-0.1.jar differ
diff --git a/src/it/dep-reduced-pom-artifactset-provided-excludes/repo/org/apache/maven/its/shade/drpape/d/0.1/d-0.1.pom b/src/it/dep-reduced-pom-artifactset-provided-excludes/repo/org/apache/maven/its/shade/drpape/d/0.1/d-0.1.pom
new file mode 100644
index 0000000..a73939d
--- /dev/null
+++ b/src/it/dep-reduced-pom-artifactset-provided-excludes/repo/org/apache/maven/its/shade/drpape/d/0.1/d-0.1.pom
@@ -0,0 +1,48 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<!--
+Licensed to the Apache Software Foundation (ASF) under one
+or more contributor license agreements. See the NOTICE file
+distributed with this work for additional information
+regarding copyright ownership. The ASF licenses this file
+to you under the Apache License, Version 2.0 (the
+"License"); you may not use this file except in compliance
+with the License. You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+Unless required by applicable law or agreed to in writing,
+software distributed under the License is distributed on an
+"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+KIND, either express or implied. See the License for the
+specific language governing permissions and limitations
+under the License.
+-->
+
+<project>
+ <modelVersion>4.0.0</modelVersion>
+
+ <groupId>org.apache.maven.its.shade.drpape</groupId>
+ <artifactId>d</artifactId>
+ <version>0.1</version>
+ <packaging>jar</packaging>
+
+ <properties>
+ <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
+ </properties>
+
+ <dependencies>
+ <dependency>
+ <groupId>org.apache.maven.its.shade.drpape</groupId>
+ <artifactId>e</artifactId>
+ <version>0.1</version>
+ </dependency>
+ </dependencies>
+
+ <distributionManagement>
+ <repository>
+ <id>maven-core-it</id>
+ <url>file:///${basedir}/repo</url>
+ </repository>
+ </distributionManagement>
+</project>
diff --git a/src/it/dep-reduced-pom-artifactset-provided-excludes/repo/org/apache/maven/its/shade/drpape/e/0.1/e-0.1.jar b/src/it/dep-reduced-pom-artifactset-provided-excludes/repo/org/apache/maven/its/shade/drpape/e/0.1/e-0.1.jar
new file mode 100644
index 0000000..1981528
Binary files /dev/null and b/src/it/dep-reduced-pom-artifactset-provided-excludes/repo/org/apache/maven/its/shade/drpape/e/0.1/e-0.1.jar differ
diff --git a/src/it/dep-reduced-pom-artifactset-provided-excludes/repo/org/apache/maven/its/shade/drpape/e/0.1/e-0.1.pom b/src/it/dep-reduced-pom-artifactset-provided-excludes/repo/org/apache/maven/its/shade/drpape/e/0.1/e-0.1.pom
new file mode 100644
index 0000000..6ac9a8f
--- /dev/null
+++ b/src/it/dep-reduced-pom-artifactset-provided-excludes/repo/org/apache/maven/its/shade/drpape/e/0.1/e-0.1.pom
@@ -0,0 +1,40 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<!--
+Licensed to the Apache Software Foundation (ASF) under one
+or more contributor license agreements. See the NOTICE file
+distributed with this work for additional information
+regarding copyright ownership. The ASF licenses this file
+to you under the Apache License, Version 2.0 (the
+"License"); you may not use this file except in compliance
+with the License. You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+Unless required by applicable law or agreed to in writing,
+software distributed under the License is distributed on an
+"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+KIND, either express or implied. See the License for the
+specific language governing permissions and limitations
+under the License.
+-->
+
+<project>
+ <modelVersion>4.0.0</modelVersion>
+
+ <groupId>org.apache.maven.its.shade.drpape</groupId>
+ <artifactId>e</artifactId>
+ <version>0.1</version>
+ <packaging>jar</packaging>
+
+ <properties>
+ <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
+ </properties>
+
+ <distributionManagement>
+ <repository>
+ <id>maven-core-it</id>
+ <url>file:///${basedir}/repo</url>
+ </repository>
+ </distributionManagement>
+</project>
diff --git a/src/it/dep-reduced-pom-artifactset-provided-excludes/verify.groovy b/src/it/dep-reduced-pom-artifactset-provided-excludes/verify.groovy
new file mode 100644
index 0000000..06093d1
--- /dev/null
+++ b/src/it/dep-reduced-pom-artifactset-provided-excludes/verify.groovy
@@ -0,0 +1,40 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+File pomFile = new File( basedir, "target/dependency-reduced-pom.xml" );
+assert pomFile.isFile()
+
+def ns = new groovy.xml.Namespace("http://maven.apache.org/POM/4.0.0")
+def pom = new XmlParser().parse( pomFile )
+
+assert pom[ns.modelVersion].size() == 1
+
+assert pom[ns.dependencies][ns.dependency].size() == 2
+
+def depB = pom[ns.dependencies][ns.dependency][0]
+assert depB[ns.artifactId].text().equals('b')
+assert depB[ns.scope].text().equals('provided')
+assert depB[ns.exclusions][ns.exclusion].size() == 0
+
+def depD = pom[ns.dependencies][ns.dependency][1]
+assert depD[ns.artifactId].text().equals('d')
+assert depD[ns.scope].text().equals('provided')
+def depDExclusions = depD[ns.exclusions][ns.exclusion]
+assert depDExclusions.size() == 1
+assert depDExclusions[0][ns.artifactId].text().equals('e')
diff --git a/src/main/java/org/apache/maven/plugins/shade/mojo/ShadeMojo.java b/src/main/java/org/apache/maven/plugins/shade/mojo/ShadeMojo.java
index 29f665c..112c301 100644
--- a/src/main/java/org/apache/maven/plugins/shade/mojo/ShadeMojo.java
+++ b/src/main/java/org/apache/maven/plugins/shade/mojo/ShadeMojo.java
@@ -1255,7 +1255,11 @@ public class ShadeMojo
}
}
- if ( !found )
+ // MSHADE-311: do not add exclusion for provided transitive dep
+ // note: MSHADE-31 introduced the exclusion logic for promoteTransitiveDependencies=true,
+ // but as of 3.2.1 promoteTransitiveDependencies has no effect for provided deps,
+ // which makes this fix even possible (see also MSHADE-181)
+ if ( !found && !"provided".equals( n3.getArtifact().getScope() ) )
{
for ( Dependency dep : dependencies )
{