免责声明:我在搜索引擎优化和网络上看了很多类似的问题,但我似乎无法找到适用于我特定情况的任何问题。
我试图在当前使用Ant的(非常大的)旧项目中实现Maven 3.0.5。作为第一步,我只是尝试使用与Ant构建脚本相同的结构来构建工件。
这要求我构建一个包含多个JAR和几个WAR的EAR。到现在为止还挺好。我能做到这一点。
问题是每个WAR都接收项目中的每个依赖项,以及这些依赖项的所有子JAR。这使得每场战争都变得荒谬可笑。
我需要做的是相当于
的WAR<exclusions>
<exclusion>
<groupId>*</groupId>
<artifactId>*</artifactId>
</exclusion>
</exclusions>
我已经看到它建议使用
<scope>provided</scope>
但这会导致我需要排除初始依赖项本身。
是否有办法包含JAR,但是要从WAR文件中排除 依赖项?
答案 0 :(得分:0)
您包含的JAR依赖于它们的依赖性是有原因的!你不能只剪切依赖树,你会破坏你的库,可能还有你的代码。
如果需要,您可以将所有JAR文件解压缩到一个目录中,进行手动构建,并进行一些覆盖测试,以便准确了解您将要和不需要的类。然后,您可以将类重新打包(手动)到为您的应用程序定制的新JAR文件中。
但是,我不建议这样做。你可能仍然会破坏东西,磁盘空间也很便宜。答案 1 :(得分:0)
提供的是您想要在这里使用的内容。
但是,您需要确保至少某些组件实际上包含应用程序所需的jar文件。只要应用程序运行时,它就会在类路径中包含所有必需的jar,它就可以正常运行。它将使用父依赖项进行构建/编译,但scope参数将阻止它们包含在子包的目标目录中,并假设它将在运行时作为父类或另一个包的一部分位于类路径中。由您决定&#34;提供&#34;确实如此。