0

我有一个带有 pom.xml 的目录和几个带有自己的 pom.xml 文件的子目录

一个子目录是本地的,称为第三方。它包含几个 jar 文件,并在执行 a 时将它们安装到本地 maven repo mvn install。这些是mvn compile其他工件的阶段所需要的。根 pom.xml 只是对每个子 pom.xml 执行相同的步骤。

我想修改根 pom.xml 以便 mvn compile 在执行其他文件夹之前在第三方文件夹上进行安装。我在 maven-compiler-plugin 中试过这个:

<executions>
    <execution>
        <id>thirdparty</id>
        <phase>install</phase>
    </execution>
</executions>

我在文档中没有看到任何关于在依赖元素中指定阶段的内容。

4

3 回答 3

1

为了确保我明白这一点,听起来你有一个聚合器 pom、AGG 和一些子模块 A 和 B,其中 A 只不过是一些必须在 B 编译之前安装在本地 repo 中的第三方 jar . 如果这是真的,那么脑海中浮现出两种可能性:

1) 取消 A,而是将第三方 jars 安装到适当的独立存储库中,例如本地 Nexus 服务器,然后将该存储库添加到您的 pom.xml 中。那将是“Maven”的做法。

2) 添加对 A 到 B 的依赖<dependencies>。在 A 中,使用需要安装的每个 jar 执行配置安装插件,并将这些执行绑定到compile阶段。那么当你compile在AGG上运行的时候,它会先compile在A上运行,它会安装所有的jar包,然后是compile在B上。注意这会产生一个A.jar的副作用,这将是B的一个依赖,因为maven 假设每个模块都只产生某种类型的工件。您可能被迫添加至少一个类或资源,以便实际构建 A.jar。不确定那个。或者,您可以尝试将 A 的包装设置为“pom”。

于 2013-05-20T03:27:27.380 回答
0

我相信您以错误的方式使用 Maven。

在运行编译工作之前,应将此类第 3 方依赖项放入本地存储库(或您的内部 Maven 存储库),并且应相应地设置项目中的依赖项。“安装第 3 方工件”不应成为构建过程的一部分。

而且,在 Maven 世界中,我们很少将 3rd 方库作为源代码的一部分存在。事实上,使用 Maven 的原因之一是摆脱源代码中的此类库。

于 2013-05-20T03:24:01.510 回答
-1

听起来你想要几个依赖项。查看依赖元素。

于 2013-05-20T02:55:06.560 回答