首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Maven-dependency-带有源RetentionPolicy的插件和注释

Maven-dependency-带有源RetentionPolicy的插件和注释
EN

Stack Overflow用户
提问于 2016-01-13 23:40:28
回答 1查看 454关注 0票数 5

在一个mvn项目中,我使用maven-dependency-plugin来检测未使用的依赖项,似乎没有我可以为谷歌的AutoValue (com.google.auto.value:auto-value)指定的依赖项scope,它可以使插件相信依赖项正在使用,尽管来自包的注释正在使用(例如@AutoValue),并且如果auto-value被排除,该项目将不会构建。

现在,一种解决方案是简单地向我的插件添加一个配置条目:

代码语言:javascript
复制
<plugin>
    <groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-dependency-plugin</artifactId>
    <configuration>
        <usedDependencies>
            <usedDependency>com.google.auto.value:auto-value</usedDependency>
        </usedDependencies>
    </configuration>
</plugin>

但我很想知道,是否有可能为auto-value配置maven-dependency-plugindependency条目,以便根据其注释检测依赖项的使用情况?

我怀疑这是不可能的,因为我在auto- RetentionPolicy中使用的注解的值是RetentionPolicy.SOURCE的,并且被编译器丢弃了。这是正确的吗?

EN

回答 1

Stack Overflow用户

发布于 2016-08-02 06:21:36

不幸的是,你的怀疑是正确的。对于源代码级别的批注,maven-dependency-plugin文档特别列出了这一点:http://maven.apache.org/shared/maven-dependency-analyzer/

Warning:分析不是在源代码而是字节码级别进行的,因此某些情况(常量、仅保留源代码的注释、javadoc中的链接)未被检测到,如果它们是依赖项的唯一使用,可能会导致错误的结果。

您可以使用usedDependencies强制AutoValue作为used,就像您在示例中所做的那样,或者改为使用ignoredUnusedDeclaredDependencies配置(这就是我最近所做的)。

我不相信通过配置依赖部分来避免这种情况是可能的,因为maven没有提供仅编译的范围级别。我用provided作用域标记AutoValue,以使它不会出现在我可能生成的任何阴影jars之外。

最后,您可以编写(或查找是否存在)一个自定义依赖关系分析器,该分析器将源代码级别的注释考虑在内。请参阅此处的文档http://maven.apache.org/plugins/maven-dependency-plugin/analyze-mojo.html#analyzer。可能不值得你费这个力气。

票数 5
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/34770843

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档