我有一个有 5 个孩子的 Maven 项目,但是当我运行它时,我希望最后一个不被执行。我可以很容易地从 pom 文件中推荐它,但是我想知道,是否有一个命令行选项可以排除子模块的执行?
4 回答
我正在处理的当前项目中有此配置以排除某些模块。
在您声明模块的 pom 中,只需输入您每次要运行的模块列表:
<modules>
<module>this-is</module>
<module>always-needed</module>
</modules>
然后,在同一个 pom 中添加一个配置文件部分并移动您不想每次运行的模块:
<profiles>
<profile>
<id>do-additional-module</id>
<modules>
<module>this-is-rarely-needed</module>
</modules>
</profile>
</profiles>
现在,当您运行时mvn package
,仅执行模块this-is
和。always-needed
当您指定配置文件时mvn -P do-additional-module package
,反应器将运行以前的模块和this-is-rarely-needed
。
M。
您可以使用配置文件来实现这一点。 父 pom.xml 中的 maven 配置文件可以包含其他子模块。
这是一个例子。激活后,此“包含”配置文件将包含第二个子模块。
<modules>
<module>child-module-one</module>
</modules>
<profiles>
<profile>
<id>include</id>
<modules>
<module>child-module-two</module>
</modules>
</profile>
</profile>
如果您在父级别触发 Maven 构建阶段(在此示例中编译),并激活此配置文件 - 例如
mvn compile -P include
您将包括您的第二个子模块。如果您要避免激活该配置文件,例如只需运行:
mvn compile
那么您的第二个子模块不包括在内。
我认为当前的 Maven 实现没有任何这样的选择。
您可以尝试一件事:创建另一个只有前 4 个子项目的项目。因此,当您只需要构建 4 而不是 5 时,请使用那个。
您不必为此创建另一个父项目。有关这方面的更多信息,请参阅Maven 项目的聚合。
简单的答案没有这样的选择。
避免在发布等期间出现问题的最佳解决方案是使用配置文件,但不要在子模块本身中更好地使用模块级别:
在子模块中,使用配置文件来激活/停用所需的操作。
<profiles>
<profile>
<id>whatEver</id>
<build>
...
</build>
</profile>
</profiles>