三个maven项目A依赖B,B依赖C,如何让C在编译时对A不可见?
Three maven project A depends on B, B depends on C, how to make C invisible to A on compile time?
在 Web 应用程序中,我的项目 A(前端)依赖于项目 B(业务层)。
项目 B 依赖于项目 C(存储库层)。
因此,位于项目C(Repo)中的class可以在项目A(Front)中实例化。但显然我不想要这个。
我试图在项目 A pom.xml 中声明排除以排除项目 C,同时声明对项目 B 的依赖 - 但是当 WAR 构建时,项目的 C jar 被排除在外最后的WAR。
如何在编译时而不是在 WAR 构建时或运行时从项目 a 中排除项目 C?
您或许可以使用排除,并在范围为 runtime
的 A 的 pom 中添加对 C 的显式依赖。这样,它就不会在编译类路径中,而应该在 war 文件中。
项目 A
应将项目 B
视为依赖项,但应将项目 C
排除在外。然后 WAR 的构建可以手动重新包含项目 C
.
这是一个包含排除项的示例依赖项。
<dependency>
<groupId>xom</groupId>
<artifactId>xom</artifactId>
<type>jar</type>
<optional>true</optional>
<exclusions>
<exclusion>
<artifactId>xalan</artifactId>
<groupId>xalan</groupId>
</exclusion>
<exclusion>
<artifactId>xercesImpl</artifactId>
<groupId>xerces</groupId>
</exclusion>
<exclusion>
<artifactId>xml-apis</artifactId>
<groupId>xml-apis</groupId>
</exclusion>
</exclusions>
</dependency>
在 Web 应用程序中,我的项目 A(前端)依赖于项目 B(业务层)。
项目 B 依赖于项目 C(存储库层)。
因此,位于项目C(Repo)中的class可以在项目A(Front)中实例化。但显然我不想要这个。
我试图在项目 A pom.xml 中声明排除以排除项目 C,同时声明对项目 B 的依赖 - 但是当 WAR 构建时,项目的 C jar 被排除在外最后的WAR。
如何在编译时而不是在 WAR 构建时或运行时从项目 a 中排除项目 C?
您或许可以使用排除,并在范围为 runtime
的 A 的 pom 中添加对 C 的显式依赖。这样,它就不会在编译类路径中,而应该在 war 文件中。
项目 A
应将项目 B
视为依赖项,但应将项目 C
排除在外。然后 WAR 的构建可以手动重新包含项目 C
.
这是一个包含排除项的示例依赖项。
<dependency>
<groupId>xom</groupId>
<artifactId>xom</artifactId>
<type>jar</type>
<optional>true</optional>
<exclusions>
<exclusion>
<artifactId>xalan</artifactId>
<groupId>xalan</groupId>
</exclusion>
<exclusion>
<artifactId>xercesImpl</artifactId>
<groupId>xerces</groupId>
</exclusion>
<exclusion>
<artifactId>xml-apis</artifactId>
<groupId>xml-apis</groupId>
</exclusion>
</exclusions>
</dependency>