如何使用maven删除库中包含的不需要的jar



我在应用程序中使用viewservlets.jar文件。我在pom.xml中添加了以下依赖项。

<dependency>
<groupId>org.eclipse.birt.runtime</groupId>
<artifactId>viewservlets</artifactId>
<version>4.4.1</version>
</dependency>

打包后,我可以在我的库中看到birt运行时jar。其他许多罐子也是如此。我不知道这些罐子是怎么放在我的文件夹里的。我使用的是java 8。我仍然可以看到一些与jdk14相关的jar(例如bcmail-jdk14-1.38.jar,bcprov-jdk14-1.38.jar(。这也是多次。战争档案因此变得越来越大。

更新

在运行时包中,可以找到许多其他包。如果我数的话,它超过了30个。在这个过程中,我只需要一个jar文件。那么,有没有办法只包括一个罐子,而不是对剩下的30多个条目使用排除?

Maven自动转换解析依赖项,即它也将依赖项的依赖项添加到WAR中。

通过这种方式,Maven确保您不会遇到ClassNotFound异常,因为viewservlets正试图调用不存在的东西。

当然,在运行时可能并没有真正调用其中一些依赖关系。如果您确信从未调用过给定的工件,则可以使用exclusion将其排除在外。但通常很难确定这一点,而且可能不值得付出努力。

EDIT:示例

<dependency>
<groupId>org.eclipse.birt.runtime</groupId>
<artifactId>viewservlets</artifactId>
<version>4.4.1</version>
<exclusions>
<exclusion>
<groupId>*</groupId>
<artifactId>*</artifactId>
</exclusion>
</exclusions>
</dependency>
<dependency>
<groupId>org.something</groupId>
<artifactId>otherdependency</artifactId>
<version>1.2.3</version>
</dependency>

最新更新