使Intellij使用Uber Jar的依赖项

时间:2019-02-26 16:25:19

标签: java maven intellij-idea dependency-management uberjar

我们的项目中有两个模块A和B。 B依赖于A。模块A被构建为Uber Jar,而模块B最终被构建为war文件。由于模块A内置在uber jar中,因此在将其添加为模块B的依赖项时,我们排除了它的所有依赖项

<dependency>
  <groupId>com.app</groupId>
  <artifactId>A</artifactId>
  <version>1.0</version>
  <exclusions>
    <exclusion>
      <groupId>*</groupId>
      <artifactId>*</artifactId>
    </exclusion>
  </exclusions>
</dependency>

此方法的唯一问题是IntelliJ在模块B中报告了一堆未声明的进口,尽管这些进口是通过uber jar从A获得的。

有没有办法使IntelliJ抑制这些警告或弄清楚A是一个Uber Jar,从而自动将其所有依赖项用于依赖项分析?

1 个答案:

答案 0 :(得分:0)

我们仍未找到解决此问题的解决方案,但提出了解决我们的用例的解决方法。

我们创建了一个空模块C,而不是直接使用模块A(该模块内置到uber jar中),现在将其内置到uber jar中。现在,模块A将会构建到一个普通的jar中,而所有的依赖jar都单独存在

A
|- B (war)
|- C (uber jar)

通过此设置,我们仍然可以从模块C中获得所需的uber jar,所有基本依赖项都包含在一个公共模块(A)中,而war模块(B)能够导入其依赖的模块(A)没有任何问题。