Java 什么';这是多svn分支中多模块maven项目的最佳实践
背景Java 什么';这是多svn分支中多模块maven项目的最佳实践,java,svn,maven-2,branch,Java,Svn,Maven 2,Branch,背景 标准svn布局中的一个主干和一个分支,/trunk和/branchs/prod maven项目中大约有20个模块 当我想编译trunk时,只需键入cdtrunk;mvn清洁包。但它将编译每个模块。当需要构建产品时,类似的东西 一家中行回购协议 问题 是否可以只编译更新的模块?实际上,我只想在可能的情况下编译修改过的源文件。通过ant或make我知道这是一件简单的事情。但是,maven compile总是从头开始 trunk和prod中的pom.xml是否应该保持相同的artifactId和
/trunk
和/branchs/prod
cdtrunk;mvn清洁包
。但它将编译每个模块。当需要构建产品时,类似的东西ant
或make
我知道这是一件简单的事情。但是,maven compile
总是从头开始mvn编译并不总是从头开始构建。它只编译更改过的java文件。除非运行mvn clean compile。当然,所有项目都将被清理,然后从头开始编译 您可以将cd刻录到您想要的项目中,并自行编译 edit如果调用mvn compile,Maven始终会运行编译阶段之前的所有阶段,并且可能会有耗时的插件执行。但是java文件的实际编译并没有超出需要。运行mvn compile两次,您将看到消息“无需编译所有类都是最新的” 还是“所有文件都是最新的” 编辑-问题编号2
如果从trunk和prod生成的工件不是不同的版本,那么为什么要同时从trunk和prod发布呢?是的,它们应该有不同的版本。除非您创建了一个实验分支,您可能会将其合并回主干中,并且您永远不打算单独释放它。在这种情况下,实验分支不需要自己的版本号。您可以尝试使用mvn-am-pl选项,该选项将操作限制在给定的模块上
+-- root (pom.xml)
+-- client (pom.xml) dep: core
+-- server (pom.xml) dep: client
+-- core (pom.xml)
+-- cli (pom.xml) dep:core
如果你做了一个
mvn -am -pl server LifeCycle
只有服务器模块和服务器使用的模块将在适当的生命周期中运行
mvn -am -pl cli LifeCycle
在本例中,只有cli模块和核心模块将在给定的生命周期中运行。请查看maven编译器插件的2.4版,它在多模块项目中有一些巨大的性能提升。-am-pl参数正是我想要的。非常感谢。
mvn -am -pl cli LifeCycle