Java 如何在覆盖期间排除jar

Java 如何在覆盖期间排除jar,java,maven,Java,Maven,我有两个应用程序-A和B 在应用程序A中有一些JAR,如J1、J2、J3。 在应用程序B中有应用程序A的覆盖和依赖关系,但我不希望应用程序B中有JARJ2 如何排除jar J2?您所要求的是不可能的。如果应用程序B依赖于应用程序A;A取决于J2——您认为如何在不提供J2的情况下运行“B” 唯一可行的办法是:如果你能进一步分割你的应用程序;可能会产生一些成分B';其中B'依赖于A';A'不依赖于J2。然后,您可以在不使用J2的情况下将B'打包 您可以使用Maven依赖项排除,如下所述: ...

我有两个应用程序-A和B

在应用程序A中有一些JAR,如J1、J2、J3。 在应用程序B中有应用程序A的覆盖和依赖关系,但我不希望应用程序B中有JARJ2


如何排除jar J2?

您所要求的是不可能的。如果应用程序B依赖于应用程序A;A取决于J2——您认为如何在不提供J2的情况下运行“B”


唯一可行的办法是:如果你能进一步分割你的应用程序;可能会产生一些成分B';其中B'依赖于A';A'不依赖于J2。然后,您可以在不使用J2的情况下将B'打包

您可以使用Maven依赖项排除,如下所述:


...
示例项目a
项目A
1
编写
示例项目B
B项目
但是,请记住,如果所需的类不再存在,则在运行时可能会遇到ClassNotFoundException

<project>
  ...
  <dependencies>
    <dependency>
      <groupId>sample.ProjectA</groupId>
      <artifactId>Project-A</artifactId>
      <version>1.0</version>
      <scope>compile</scope>
      <exclusions>
        <exclusion>  <!-- declare the exclusion here -->
          <groupId>sample.ProjectB</groupId>
          <artifactId>Project-B</artifactId>
        </exclusion>
      </exclusions> 
    </dependency>
  </dependencies>
</project>