我们对Maven来说相对较新,现在面临一个问题。
我们有一个Maven项目(projectA),其JAR是其他几个项目的依赖项。一些其他项目是一些自定义Web容器,而其他项目则不是,因此在自定义Web容器的情况下提供了一些projectA的依赖项jar,但在其他项目的情况下应该是运行时范围。我们目前使用排除列表来过滤掉自定义Web容器中提供的jar。
我们想知道使用maven配置文件是否更好。我们知道如何创建具有不同依赖关系的配置文件(实际上是相同的依赖关系,不同的范围),并且在两个配置文件中,构建的projectA jar都是按位相同的。但是我们不知道的是,当我们将projectA jar工件部署/发布到maven存储库时,pom.xml应该是什么样的?对于这些Web容器项目,pom.xml不应包含提供的jar,但对于其他项目,pom.xml应包含这些jar。
我们可以在每个配置文件中为jar使用不同的名称,并使用不同的pom.xml进行部署,但由于这些jar是逐位相同的,所以它似乎不是一个完美的解决方案。所以我们认为必须有一个更好的解决方案来解决这个问题,只是我们不知道,因为我们对Maven来说比较新。感谢。
答案 0 :(得分:0)
POM是POM。您似乎在谈论在引用“A”的其他项目中管理传递依赖项。你在Maven的选择相当有限:
我个人选择“可选”路线,因为每个项目的工作都是拉入它需要的依赖项,如果使用“A”时某些东西是可选的,那就意味着使用“A”的东西必须明确选择他们是否会使用它的可选部分。在构建具有多个不同用例的工件时,这往往是最合适的。
要获得此区域的其他帮助,您还可以使用maven enforcer plugin禁止构建中的某些依赖项,这样您就不会意外地获得您不想要的jar。