| ~~ 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. |
| |
| ------ |
| Exclude dependencies from dependency analysis |
| ------ |
| Henning Schmiedehausen |
| ------ |
| 2015-01-01 |
| ------ |
| |
| Exclude dependencies from dependency analysis |
| |
| A project's dependencies can be analyzed as part of the build process by binding the <<<dependency:analyze-only>>> |
| goal to the lifecycle. By default, the analysis will be performed during the <<<verify>>> lifecycle phase. |
| |
| In rare cases it is possible to have dependencies that are |
| legitimate on the classpath but cause either "Declared but unused" |
| or "Undeclared but used" warnings. The most common case is with jars |
| that contain annotations and the byte code analysis is unable to |
| determine whether a jar is actually required or not. |
| |
| The plugin can then be configured to ignore these dependencies in |
| either "declared but unused" or "undeclared but used" case or in |
| both simultaneously. See the following POM configuration for an |
| example: |
| |
| +---+ |
| <project> |
| ... |
| <build> |
| <plugins> |
| <plugin> |
| <groupId>org.apache.maven.plugins</groupId> |
| <artifactId>maven-dependency-plugin</artifactId> |
| <version>${project.version}</version> |
| <executions> |
| <execution> |
| <id>analyze</id> |
| <goals> |
| <goal>analyze-only</goal> |
| </goals> |
| <configuration> |
| <failOnWarning>true</failOnWarning> |
| |
| <!-- ignore jsr305 for both "used but undeclared" and "declared but unused" --> |
| <ignoredDependencies> |
| <ignoredDependency>com.google.code.findbugs:jsr305</ignoredDependency> |
| </ignoredDependencies> |
| |
| <!-- ignore annotations for "used but undeclared" warnings --> |
| <ignoredUsedUndeclaredDependencies> |
| <ignoredUsedUndeclaredDependency>com.google.code.findbugs:annotations</ignoredUsedUndeclaredDependency> |
| </ignoredUsedUndeclaredDependencies> |
| |
| <!-- ignore annotations for "unused but declared" warnings --> |
| <ignoredUnusedDeclaredDependencies> |
| <ignoredUnusedDeclaredDependency>com.google.code.findbugs:annotations</ignoredUnusedDeclaredDependency> |
| </ignoredUnusedDeclaredDependencies> |
| </configuration> |
| </execution> |
| </executions> |
| </plugin> |
| </plugins> |
| </build> |
| ... |
| </project> |
| +---+ |
| |
| Note that the <<<dependency:analyze-only>>> goal is used in preference to <<<dependency:analyze>>> since it doesn't |
| force a further compilation of the project, but uses the compiled classes produced from the earlier |
| <<<test-compile>>> phase in the lifecycle. |
| |
| The project's dependencies will then be automatically analyzed during the <<<verify>>> lifecycle phase, which can be |
| executed explicitly as follows: |
| |
| +---+ |
| mvn verify |
| +---+ |