我有几个Maven项目,它们共享一个共同的父级,如下所示:
project-parent
project-1
project-2: includes project-1
project-3: includes project-2这里,project-3的依赖项中有project-2,而project-2的依赖项中有project-1。
当我将一个项目推送到git时,Jenkins会自动重建到依赖的项目。例如,当我按project-3时,project-2将被重建。正因为如此,project-1也将被重建。发生这种情况是因为Jenkins了解依赖关系图。
但是,当我在我的开发机器上本地构建project-3时,我也必须记住重新构建project-2 (和project-1)。
我可以向父项目添加一个<modules>...</modules>部分,并简单地重新构建父项目。这将重建整个项目,包括所有的子项目。然而,我宁愿不这样做,因为有很多项目,其中一些需要大量的时间来构建。
因此,我想构建一个项目(我正在做的那个项目),并以某种方式(或方便地)重建所有依赖的项目,类似于Jenkins的行为。基本上,我希望在我的开发机器上在本地实现Jenkins行为。这个是可能的吗?
发布于 2019-07-26 18:22:31
您可以从父项目执行以下命令(假设您在<module>...</module>中有my-子模块)
mvn clean install -pl my-child-module -am
此命令将构建项目my-child-module及其依赖项。
-pl,--项目 建造指定的反应堆项目,而不是所有项目 -am,-同时制造 如果指定了项目列表,还将生成列表-amd所需的项目,如果指定了项目列表,则还生成依赖于列表上的项目的项目。
发布于 2019-07-26 18:18:32
您还可以创建一个完全独立于其余部分的聚合器:每个<module>指向包含pom.xml的文件夹的路径(也可以直接针对pom.xml)。
<project>
...
<modules>
<module>project-parent</module>
<module>project-1</module>
<module>project-2</module>
<module>project-3</module>
</modules>
...
</project>在此场景中,从聚合器构建将允许maven充分了解依赖关系图并按顺序进行构建。您只需注意正确更新版本,以确保其匹配(如果项目-2依赖于项目2版本-1和项目-1在版本3,那么这是行不通的)。
您不需要放置您不想要的模块,但是要注意,如果一个模块有子<module>,它也会构建它们。
https://stackoverflow.com/questions/57225086
复制相似问题