Maven - 单个pom中的多个构建

时间:2009-08-24 15:22:41

标签: maven-2

是否可以在单个POM文件中构建多个工件?它不是关于构建多个程序集,而是工件具有不同的构建和依赖性,但引用相同的源。

例如我需要构建的一个工件是一个WAR文件,它从构建中排除某些AspectJ文件,另一个是JAR文件,需要在构建期间编织这些Aspects。

现在,我有2个pom.xml,它运行在同一个源的2个副本上,以产生所需的工件。这可以在一个POM中完成吗?

2 个答案:

答案 0 :(得分:9)

尝试做你想做的事情通常是不好的做法,虽然可以用我推荐的配置文件和程序集来完成。

这就是我接近它的方式。

将代码分成jar项目并配置jar项目以使用aspectj编译器插件。使war项目依赖于jar项目,jar项目依赖于aspectjrt。您要排除的jar依赖项可以指定为范围“已提供”,因此它们不会包含在构建中,也不会通过配置jar依赖项来排除这些传递依赖项(请参阅传递依赖项排除部分) Dependency Mechanism documentation的详细信息。

当构建war时,任何编译范围的依赖项(及其传递依赖项)都将被捆绑到war的WEB-INF / lib目录中(也包括aspectjrt)。

如果您需要立即构建两个项目,请定义聚合器pom并将jar和war项目指定为模块。

答案 1 :(得分:0)

嗯,我认为最简单的方法是使用语法的超级pom。似乎它比一个有两个目标的pom更容易维护。