背景
/trunk
和/branches/prod
cd trunk; mvn clean package
。但它会编译每个模块。在需要建立生产时类似的东西。问题
ant
或make
这是一件简单的事情。但是,maven compile
总是从头开始。答案 0 :(得分:1)
mvn编译并不总是从头开始构建。它只编译已更改的java文件。除非你运行mvn clean编译。当然,所有项目都将被清理,然后从头开始编译。
您可以随时cd进入您想要的项目并自行编译。
编辑如果您调用mvn编译,Maven 总是运行所有阶段直到编译阶段,并且那里可能存在耗时的插件执行。但是java文件的实际编译并没有超出需要。运行mvn编译两次,你会看到消息“没有什么可以编译所有类是最新的”
或者“所有文件是最新的”..?
编辑 - 问题nbr 2 如果两者产生的工件不是不同版本,为什么要从trunk和prod中释放? 是他们应该有不同的版本。除非你创建一个实验分支,你可能会合并回主干,你永远不打算自己发布它。在这种情况下,实验分支不需要自己的版本号。
答案 1 :(得分:1)
您可以尝试使用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模块和核心模块将在给定的生命周期内运行。