Andreas Hubold created MDEP-594:
-----------------------------------
Summary: Dependency reported as "unused declared" when
runtime-retention annotation is used
Key: MDEP-594
URL: https://issues.apache.org/jira/browse/MDEP-594
Project: Maven Dependency Plugin
Issue Type: Bug
Components: analyze
Affects Versions: 3.0.0
Environment: java version "1.8.0_144"
Reporter: Andreas Hubold
Attachments: example.tgz
In the attached example project, module "{{usage}}" uses annotation
{{@Example}}:
{code}
public interface Usage {
@Example String getEmail();
}
{code}
which is defined in module "{{annotation}}" as:
{code}
@Target({ElementType.TYPE_USE, ElementType.TYPE_PARAMETER})
@Retention(RetentionPolicy.RUNTIME)
public @interface Example {
}
{code}
Consequently, the pom.xml of module "{{usage}}" defines a compile-dependency to
module "{{annotation}}" but the dependency:analyze-only goal incorrectly
reports this as unused dependency:
{noformat}
[main] [INFO] --- maven-dependency-plugin:3.0.0:analyze-only
(analyze-dependencies) @ usage ---
[main] [WARNING] Unused declared dependencies found:
[main] [WARNING] com.example:annotation:jar:1.0-SNAPSHOT:compile
{noformat}
This false positive is only reported if
* the annotation is meta-annotated with target TYPE_USE + TYPE_PARAMETER
* and the source.version/target.version of the compiler plugin for module
"{{usage}}" is 1.8
There's no false positive if the {{@Target}} meta-annotation is removed or if
compiler's source/target version is set to 1.7.
--
This message was sent by Atlassian JIRA
(v6.4.14#64029)