【问题标题】:Maven dependency for downloading a jar file用于下载 jar 文件的 Maven 依赖项
【发布时间】:2019-06-20 21:36:01
【问题描述】:

我希望有人能给我一些关于这个的提示,因为谷歌对我帮助不大。 我想从 Artifactory 下载一个 jar,并从我的 java 代码中运行它,但是我在这个简单的步骤中遇到了一些困难。

this is the maven dependency that I cannot make work

有了这个依赖,Maven 知道我的 java 文件的 groupId、artifactId 和版本。至于 Scope 字段,我看到它可以是 compile、provided、runtime、system 或 test。

那个 jar 文件代表另一个模块,它是一个应用程序,我想从代码中处理它,我在构建项目时不希望该文件有任何特定状态,我只想下载它,然后在需要的时候使用它,但必须在当前项目中下载。 现在,有了这个maven依赖,当我构建项目时,jar文件将从Artifactory下载,但最后我得到一个错误:

原因:org.springframework.context.annotation.ConflictingBeanDefinitionException: bean 类 [com.cgm.user.impl.UserManagerImpl] 的注释指定 bean 名称“userManagerImpl”与现有的不兼容 bean 定义冲突同名同类 [com.cgm.authentication.impl.UserManagerImpl]

所以,Spring 不知道该选择什么;我认为一种解决方案是重命名项目中的所有 bean,但我负担不起。

有什么建议吗?

非常感谢!

【问题讨论】:

  • 您可以使用 @Qualifier 注释为这些 bean 之一提供特定的不同名称

标签: java spring maven jar artifactory


【解决方案1】:

对于您所指出的,问题是因为您有多个相同类型的bean。

您可以将 @Qualifier@Autowired 一起使用。事实上,如果发现不明确的 bean 类型,spring 会要求你明确选择 bean,在这种情况下你应该提供限定符

例如在以下情况下,必须提供限定符

 @Component
 @Qualifier("staff") 
 public Staff implements Person {}

 @Component
 @Qualifier("employee") 
 public Manager implements Person {}


 @Component
 public Payroll {

 private Person person;

  @Autowired
  public Payroll(@Qualifier("employee") Person person){
      this.person = person;
  }

}

另一种选择是在类定义中使用 @Qualifier 注释(如果它是您项目的一部分)。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-05-07
    • 2014-02-26
    • 2016-01-11
    • 2018-12-26
    • 1970-01-01
    • 2020-09-21
    相关资源
    最近更新 更多