You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@maven.apache.org by mi...@apache.org on 2021/04/11 09:15:50 UTC
[maven-dependency-plugin] 01/01: [MDEP-714] Add analyze parameter
"ignoreUnusedRuntime"
This is an automated email from the ASF dual-hosted git repository.
michaelo pushed a commit to branch MDEP-714
in repository https://gitbox.apache.org/repos/asf/maven-dependency-plugin.git
commit 9aa0fc026dccb64d4dc5529583ed9e936e37c394
Author: Lars Knickrehm <ma...@lars-sh.de>
AuthorDate: Sat Jan 2 15:38:16 2021 +0100
[MDEP-714] Add analyze parameter "ignoreUnusedRuntime"
This closes #123
---
.../invoker.properties | 18 +++++++
.../mdep-714-analyze-ignore-unused-runtime/pom.xml | 62 ++++++++++++++++++++++
.../src/main/java/Main.java | 22 ++++++++
.../dependency/analyze/AbstractAnalyzeMojo.java | 23 ++++++++
4 files changed, 125 insertions(+)
diff --git a/src/it/projects/mdep-714-analyze-ignore-unused-runtime/invoker.properties b/src/it/projects/mdep-714-analyze-ignore-unused-runtime/invoker.properties
new file mode 100644
index 0000000..e602830
--- /dev/null
+++ b/src/it/projects/mdep-714-analyze-ignore-unused-runtime/invoker.properties
@@ -0,0 +1,18 @@
+# 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.
+
+invoker.goals = clean ${project.groupId}:${project.artifactId}:${project.version}:analyze
diff --git a/src/it/projects/mdep-714-analyze-ignore-unused-runtime/pom.xml b/src/it/projects/mdep-714-analyze-ignore-unused-runtime/pom.xml
new file mode 100644
index 0000000..15afd8d
--- /dev/null
+++ b/src/it/projects/mdep-714-analyze-ignore-unused-runtime/pom.xml
@@ -0,0 +1,62 @@
+<?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 xmlns="http://maven.apache.org/POM/4.0.0"
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+ <modelVersion>4.0.0</modelVersion>
+
+ <groupId>org.apache.maven.its.dependency</groupId>
+ <artifactId>test</artifactId>
+ <version>1.0-SNAPSHOT</version>
+
+ <name>Test</name>
+ <description>
+ Test dependency:analyze with ignoreUnusedRuntime
+ </description>
+
+ <properties>
+ <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
+ </properties>
+
+ <dependencies>
+ <dependency>
+ <groupId>org.apache.maven</groupId>
+ <artifactId>maven-project</artifactId>
+ <version>2.0.6</version>
+ <scope>runtime</scope>
+ </dependency>
+ </dependencies>
+
+ <build>
+ <pluginManagement>
+ <plugins>
+ <plugin>
+ <artifactId>maven-dependency-plugin</artifactId>
+ <configuration>
+ <verbose>true</verbose>
+ <failOnWarning>true</failOnWarning>
+ <ignoreUnusedRuntime>true</ignoreUnusedRuntime>
+ </configuration>
+ </plugin>
+ </plugins>
+ </pluginManagement>
+ </build>
+</project>
diff --git a/src/it/projects/mdep-714-analyze-ignore-unused-runtime/src/main/java/Main.java b/src/it/projects/mdep-714-analyze-ignore-unused-runtime/src/main/java/Main.java
new file mode 100644
index 0000000..293e02c
--- /dev/null
+++ b/src/it/projects/mdep-714-analyze-ignore-unused-runtime/src/main/java/Main.java
@@ -0,0 +1,22 @@
+/*
+ * 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.
+ */
+
+public class Main
+{
+}
diff --git a/src/main/java/org/apache/maven/plugins/dependency/analyze/AbstractAnalyzeMojo.java b/src/main/java/org/apache/maven/plugins/dependency/analyze/AbstractAnalyzeMojo.java
index d32420c..0f735ae 100644
--- a/src/main/java/org/apache/maven/plugins/dependency/analyze/AbstractAnalyzeMojo.java
+++ b/src/main/java/org/apache/maven/plugins/dependency/analyze/AbstractAnalyzeMojo.java
@@ -102,6 +102,12 @@ public abstract class AbstractAnalyzeMojo
private boolean ignoreNonCompile;
/**
+ * Ignore Runtime scope for unused dependency analysis.
+ */
+ @Parameter( property = "ignoreUnusedRuntime", defaultValue = "false" )
+ private boolean ignoreUnusedRuntime;
+
+ /**
* Output the xml for the missing dependencies (used but not declared).
*
* @since 2.0-alpha-5
@@ -324,6 +330,11 @@ public abstract class AbstractAnalyzeMojo
Set<Artifact> ignoredUsedUndeclared = new LinkedHashSet<>();
Set<Artifact> ignoredUnusedDeclared = new LinkedHashSet<>();
+ if ( ignoreUnusedRuntime )
+ {
+ filterArtifactsByScope( unusedDeclared, Artifact.SCOPE_RUNTIME );
+ }
+
ignoredUsedUndeclared.addAll( filterDependencies( usedUndeclared, ignoredDependencies ) );
ignoredUsedUndeclared.addAll( filterDependencies( usedUndeclared, ignoredUsedUndeclaredDependencies ) );
@@ -402,6 +413,18 @@ public abstract class AbstractAnalyzeMojo
return warning;
}
+ private void filterArtifactsByScope( Set<Artifact> artifacts, String scope )
+ {
+ for ( Iterator<Artifact> iterator = artifacts.iterator(); iterator.hasNext(); )
+ {
+ Artifact artifact = iterator.next();
+ if ( artifact.getScope().equals( scope ) )
+ {
+ iterator.remove();
+ }
+ }
+ }
+
private void logArtifacts( Set<Artifact> artifacts, boolean warn )
{
if ( artifacts.isEmpty() )