三个maven项目A依赖于B, B依赖于C,如何使C在编译时对A不可见



在一个web应用程序中,我的项目a(前端)依赖于项目B(业务层)。

项目B依赖于项目C(存储库层)。

因此,位于项目C (Repo)中的类可以在项目a (Front)中实例化。但显然我不想这样。

我试图在项目的A pom.xml中声明排除项目C,同时声明对项目B的依赖关系-但是当构建WAR时,项目的C jar被排除在最终的WAR之外。

我如何排除项目C从项目a在编译时,而不是在WAR构建时或运行时?

您可以使用排除,并在范围为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>

最新更新