You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@maven.apache.org by rf...@apache.org on 2019/04/13 09:37:32 UTC
[maven-shade-plugin] 08/11: Only keep actually consumed services
This is an automated email from the ASF dual-hosted git repository.
rfscholte pushed a commit to branch MSHADE-313
in repository https://gitbox.apache.org/repos/asf/maven-shade-plugin.git
commit 78ca1f3296779de8f461e32053ca536bf298e1c3
Author: Markus KARG <ma...@headcrashing.eu>
AuthorDate: Sat Apr 6 12:04:52 2019 +0000
Only keep actually consumed services
---
src/it/MSHADE-313/pom.xml | 3 ++-
src/it/MSHADE-313/test/pom.xml | 8 +++++++-
src/it/MSHADE-313/test/src/main/java/Main.java | 9 +++++++--
src/it/MSHADE-313/{service => unused-service}/pom.xml | 2 +-
.../src/main/java/UnusedServiceClass.java} | 2 +-
.../src/main/java/UnusedServiceInterface.java} | 2 +-
.../main/resources/META-INF/services/UnusedServiceInterface} | 2 +-
src/it/MSHADE-313/{service => used-service}/pom.xml | 2 +-
.../src/main/java/SomeReferencedClass.java | 0
.../src/main/java/SomeServiceClass.java | 0
.../src/main/java/SomeServiceInterface.java | 0
.../src/main/java/SomeUnreferencedClass.java | 0
.../src/main/resources/META-INF/services/SomeServiceInterface | 0
src/it/MSHADE-313/verify.bsh | 2 ++
.../org/apache/maven/plugins/shade/filter/MinijarFilter.java | 11 ++++++++++-
15 files changed, 33 insertions(+), 10 deletions(-)
diff --git a/src/it/MSHADE-313/pom.xml b/src/it/MSHADE-313/pom.xml
index 0eab97c..7907136 100644
--- a/src/it/MSHADE-313/pom.xml
+++ b/src/it/MSHADE-313/pom.xml
@@ -33,7 +33,8 @@ under the License.
</description>
<modules>
- <module>service</module>
+ <module>unused-service</module>
+ <module>used-service</module>
<module>test</module>
</modules>
</project>
diff --git a/src/it/MSHADE-313/test/pom.xml b/src/it/MSHADE-313/test/pom.xml
index b0ecdaa..cb51ef6 100644
--- a/src/it/MSHADE-313/test/pom.xml
+++ b/src/it/MSHADE-313/test/pom.xml
@@ -29,7 +29,13 @@ under the License.
<dependencies>
<dependency>
<groupId>org.apache.maven.its.shade.mj</groupId>
- <artifactId>service</artifactId>
+ <artifactId>unused-service</artifactId>
+ <version>1.0</version>
+ </dependency>
+
+ <dependency>
+ <groupId>org.apache.maven.its.shade.mj</groupId>
+ <artifactId>used-service</artifactId>
<version>1.0</version>
</dependency>
</dependencies>
diff --git a/src/it/MSHADE-313/test/src/main/java/Main.java b/src/it/MSHADE-313/test/src/main/java/Main.java
index 293e02c..3f22717 100644
--- a/src/it/MSHADE-313/test/src/main/java/Main.java
+++ b/src/it/MSHADE-313/test/src/main/java/Main.java
@@ -6,9 +6,9 @@
* 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
@@ -17,6 +17,11 @@
* under the License.
*/
+import java.util.ServiceLoader;
+
public class Main
{
+ public static void main( String[] args ) {
+ ServiceLoader.load( SomeServiceInterface.class );
+ }
}
diff --git a/src/it/MSHADE-313/service/pom.xml b/src/it/MSHADE-313/unused-service/pom.xml
similarity index 95%
copy from src/it/MSHADE-313/service/pom.xml
copy to src/it/MSHADE-313/unused-service/pom.xml
index 3dc87e2..3058161 100644
--- a/src/it/MSHADE-313/service/pom.xml
+++ b/src/it/MSHADE-313/unused-service/pom.xml
@@ -23,6 +23,6 @@ under the License.
<modelVersion>4.0.0</modelVersion>
<groupId>org.apache.maven.its.shade.mj</groupId>
- <artifactId>service</artifactId>
+ <artifactId>unused-service</artifactId>
<version>1.0</version>
</project>
diff --git a/src/it/MSHADE-313/service/src/main/java/SomeServiceInterface.java b/src/it/MSHADE-313/unused-service/src/main/java/UnusedServiceClass.java
similarity index 92%
copy from src/it/MSHADE-313/service/src/main/java/SomeServiceInterface.java
copy to src/it/MSHADE-313/unused-service/src/main/java/UnusedServiceClass.java
index d5c3e95..893d019 100644
--- a/src/it/MSHADE-313/service/src/main/java/SomeServiceInterface.java
+++ b/src/it/MSHADE-313/unused-service/src/main/java/UnusedServiceClass.java
@@ -17,6 +17,6 @@
* under the License.
*/
-public interface SomeServiceInterface
+public class UnusedServiceClass implements UnusedServiceInterface
{
}
diff --git a/src/it/MSHADE-313/service/src/main/java/SomeServiceInterface.java b/src/it/MSHADE-313/unused-service/src/main/java/UnusedServiceInterface.java
similarity index 95%
copy from src/it/MSHADE-313/service/src/main/java/SomeServiceInterface.java
copy to src/it/MSHADE-313/unused-service/src/main/java/UnusedServiceInterface.java
index d5c3e95..f1654b6 100644
--- a/src/it/MSHADE-313/service/src/main/java/SomeServiceInterface.java
+++ b/src/it/MSHADE-313/unused-service/src/main/java/UnusedServiceInterface.java
@@ -17,6 +17,6 @@
* under the License.
*/
-public interface SomeServiceInterface
+public interface UnusedServiceInterface
{
}
diff --git a/src/it/MSHADE-313/service/src/main/resources/META-INF/services/SomeServiceInterface b/src/it/MSHADE-313/unused-service/src/main/resources/META-INF/services/UnusedServiceInterface
similarity index 89%
copy from src/it/MSHADE-313/service/src/main/resources/META-INF/services/SomeServiceInterface
copy to src/it/MSHADE-313/unused-service/src/main/resources/META-INF/services/UnusedServiceInterface
index 5af3e8e..1dd5c84 100644
--- a/src/it/MSHADE-313/service/src/main/resources/META-INF/services/SomeServiceInterface
+++ b/src/it/MSHADE-313/unused-service/src/main/resources/META-INF/services/UnusedServiceInterface
@@ -16,5 +16,5 @@
# specific language governing permissions and limitations
# under the License.
#
- SomeServiceClass # Please do not remove comments or whitespace; they are part of the IT test.
+ UnusedServiceClass # Please do not remove comments or whitespace; they are part of the IT test.
diff --git a/src/it/MSHADE-313/service/pom.xml b/src/it/MSHADE-313/used-service/pom.xml
similarity index 95%
rename from src/it/MSHADE-313/service/pom.xml
rename to src/it/MSHADE-313/used-service/pom.xml
index 3dc87e2..fe4edc0 100644
--- a/src/it/MSHADE-313/service/pom.xml
+++ b/src/it/MSHADE-313/used-service/pom.xml
@@ -23,6 +23,6 @@ under the License.
<modelVersion>4.0.0</modelVersion>
<groupId>org.apache.maven.its.shade.mj</groupId>
- <artifactId>service</artifactId>
+ <artifactId>used-service</artifactId>
<version>1.0</version>
</project>
diff --git a/src/it/MSHADE-313/service/src/main/java/SomeReferencedClass.java b/src/it/MSHADE-313/used-service/src/main/java/SomeReferencedClass.java
similarity index 100%
rename from src/it/MSHADE-313/service/src/main/java/SomeReferencedClass.java
rename to src/it/MSHADE-313/used-service/src/main/java/SomeReferencedClass.java
diff --git a/src/it/MSHADE-313/service/src/main/java/SomeServiceClass.java b/src/it/MSHADE-313/used-service/src/main/java/SomeServiceClass.java
similarity index 100%
rename from src/it/MSHADE-313/service/src/main/java/SomeServiceClass.java
rename to src/it/MSHADE-313/used-service/src/main/java/SomeServiceClass.java
diff --git a/src/it/MSHADE-313/service/src/main/java/SomeServiceInterface.java b/src/it/MSHADE-313/used-service/src/main/java/SomeServiceInterface.java
similarity index 100%
rename from src/it/MSHADE-313/service/src/main/java/SomeServiceInterface.java
rename to src/it/MSHADE-313/used-service/src/main/java/SomeServiceInterface.java
diff --git a/src/it/MSHADE-313/service/src/main/java/SomeUnreferencedClass.java b/src/it/MSHADE-313/used-service/src/main/java/SomeUnreferencedClass.java
similarity index 100%
rename from src/it/MSHADE-313/service/src/main/java/SomeUnreferencedClass.java
rename to src/it/MSHADE-313/used-service/src/main/java/SomeUnreferencedClass.java
diff --git a/src/it/MSHADE-313/service/src/main/resources/META-INF/services/SomeServiceInterface b/src/it/MSHADE-313/used-service/src/main/resources/META-INF/services/SomeServiceInterface
similarity index 100%
rename from src/it/MSHADE-313/service/src/main/resources/META-INF/services/SomeServiceInterface
rename to src/it/MSHADE-313/used-service/src/main/resources/META-INF/services/SomeServiceInterface
diff --git a/src/it/MSHADE-313/verify.bsh b/src/it/MSHADE-313/verify.bsh
index e3c5d32..cf79b16 100644
--- a/src/it/MSHADE-313/verify.bsh
+++ b/src/it/MSHADE-313/verify.bsh
@@ -29,6 +29,8 @@ String[] wanted =
String[] unwanted =
{
+ "UnusedServiceInterface.class",
+ "UnusedServiceClass.class",
"SomeUnreferencedClass.class"
};
diff --git a/src/main/java/org/apache/maven/plugins/shade/filter/MinijarFilter.java b/src/main/java/org/apache/maven/plugins/shade/filter/MinijarFilter.java
index 528caa8..e04355e 100644
--- a/src/main/java/org/apache/maven/plugins/shade/filter/MinijarFilter.java
+++ b/src/main/java/org/apache/maven/plugins/shade/filter/MinijarFilter.java
@@ -125,6 +125,8 @@ public class MinijarFilter
private void removeServices( final MavenProject project, final Clazzpath cp )
{
+ final Set<Clazz> neededClasses = cp.getClazzes();
+ neededClasses.removeAll( removable );
try
{
for ( final String fileName : project.getRuntimeClasspathElements() )
@@ -134,7 +136,14 @@ public class MinijarFilter
for ( final Enumeration<JarEntry> entries = jar.entries(); entries.hasMoreElements(); )
{
final JarEntry jarEntry = entries.nextElement();
- if ( !jarEntry.getName().startsWith( "META-INF/services/" ) )
+ if ( jarEntry.isDirectory() || !jarEntry.getName().startsWith( "META-INF/services/" ) )
+ {
+ continue;
+ }
+
+ final String serviceClassName = jarEntry.getName().substring( "META-INF/services/".length() );
+ final boolean isNeededClass = neededClasses.contains( cp.getClazz( serviceClassName ) );
+ if ( !isNeededClass )
{
continue;
}