在一个多模块的Maven项目中,其中一个模块是一个阴影模块(例如,没有源码,但会生成一个 jar
在...期间 package
阶段)。) 其他模块将此模块作为依赖关系引用(都在同一个父模块下)。 有没有办法让Eclipse将阴影模块识别为依赖关系?Eclipse 只覆盖了最多 compile
.
目前它在命令行上工作(因为 package
运行),但在Eclipse中却显示错误。
我一直没有找到解决这个问题的方法。
详细说明一下。
- Parent project
- Module A
- Module B
模块A是一个阴影模块,这意味着它有一些类似于:
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-shade-plugin</artifactId>
<executions>
<execution>
<id>shade</id>
<phase>package</phase>
<goals>
<goal>shade</goal>
</goals>
<configuration>
<relocations>
<relocation>
<pattern>com.third.party</pattern>
<shadedPattern>my.shaded.third.party</shadedPattern>
</relocation>
</relocations>
</configuration>
</execution>
</executions>
</plugin>
</plugins>
</build>
模块B将模块A作为依赖关系(在依赖关系-依赖关系下)。模块B试图通过导入重新定位的路径来使用模块A中的类...例如。
import my.shaded.third.party.Foo;
这样做是行不通的,因为它找不到Foo. 这是有道理的,因为Eclipse构建中只运行编译阶段。
右键点击依赖项目> Maven> 禁用工作空间解析
这将告诉Eclipse使用Maven的编译,这意味着你可以使用 my.shaded.*
的导入。
然而,这样做的后果是,你的项目在使用maven构建之前不会被更新。它 是 一个让Eclipse识别阴影依赖的解决方案,不过。