下载jar文件的Maven依赖项

时间:2019-01-27 20:30:33

标签: java spring maven jar artifactory

我希望有人可以给我一些提示,因为google帮不了我太多。 我想从Artifactory下载一个jar,并从我的Java代码运行它,但是在这个简单的步骤上遇到了一些困难。

this is the maven dependency that I cannot make work

有了这种依赖性,Maven知道了我的Java文件的groupId,artifactId和版本。至于“作用域”字段,我看到它可以被编译,提供,运行时,系统或测试。

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

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

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

有什么建议吗?

非常感谢!

1 个答案:

答案 0 :(得分: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 批注(如果它是项目的一部分)。