【问题标题】:maven - disable dedicated goals for modules in multi-module buildmaven - 在多模块构建中禁用模块的专用目标
【发布时间】:2012-10-15 09:39:50
【问题描述】:

我使用一个多模块构建文件来触发一个相当复杂的 java 项目的构建。现在我想创建 Eclipse 项目文件——但不是针对所有模块。是否可以在 pom 上定义它应该忽略eclipse:eclipse 目标?

我用mvn eclipse:eclipse 调用的多模块 pom 的模块定义如下所示:

<modules>
  <module>../project1/generate/pom.xml</module>
  <module>../project1/pom.xml</module>
  <module>../project2/generate/pom.xml</module>
  <module>../project2/pom.xml</module>
  <!-- and many more projects with or without generate sub modules -->
</modules>

当然,pom 不仅需要用于创建 eclipse 项目,所以我不能只删除导致该目标出现问题的模块。

询问的原因:在 generate 模块上执行的eclipse:eclipse 将更改清单文件中的某些属性,从而导致下一次构建中断。而且我厌倦了一直手动纠正它们;)

【问题讨论】:

  • 可以注释掉不需要创建eclipse项目文件的项目吗?
  • 正如我所说:我不想。从技术上讲:是的,但我想避免每次在执行mvn eclipse:eclipse 之前手动编辑构建文件(并在之后恢复更改)。我希望有一个技巧来构建和创建项目文件,而无需在之前和/或之后编辑任何文件。

标签: java eclipse maven build


【解决方案1】:

您可以为此使用Maven Profiles

删除您定义的模块并添加如下内容:

<profiles>
    <profile>
        <id>full</id>
        <activation>
            <activeByDefault>true</activeByDefault>
        </activation>
        <modules>
            <module>../project1/generate/pom.xml</module>
            <module>../project1/pom.xml</module>
            <module>../project2/generate/pom.xml</module>
            <module>../project2/pom.xml</module>
        </modules>
    </profile>
    <profile>
        <id>eclipse</id>
        <modules>
            <module>../project1/pom.xml</module>
            <module>../project2/pom.xml</module>
        </modules>
    </profile>
</profiles>

那么当你要生成eclipse设置时:

mvn -Peclipse eclipse:eclipse

【讨论】:

  • 聪明 - 试过了,效果很好!只是我必须始终记住将配置文件设置为“eclipse”并将其传达给其他开发人员。它比以前好多了,但我仍然希望能在不使用配置文件的情况下获得一个技巧。
【解决方案2】:

您可以使用Maven Advanced Reactor Options(从 Maven 2.1 开始):

例如,仅针对 project1 和 project2:

mvn --projects project1, project2 eclipse:eclipse

以 project1 及其所有依赖项为目标:

mvn --projects project1 --also-make eclipse:eclipse

这为反应多模块项目提供了一种标准化的方式,并且不需要在 pom.xml 中进行修改。

【讨论】:

  • 不错!对于我的特殊情况,这不是完美的解决方案,因为我必须列出很多名称很长的项目(+ 我对此太懒了),所以这次我实际上更喜欢“配置文件”技巧。但我一定会牢记这种方法。谢谢!
  • 附注:为了更好的可维护性,您可以将长 mvn 命令写入一些 Unix/Windows 脚本,例如 set-eclipse-project.shset-eclipse-project.bat 并将它们保留在您的项目中。跨度>
  • 这些项目将被许多人签出,我想以一种允许他们使用普通 maven 命令而不会遇到问题的方式配置构建......脚本和配置文件有一个共同点:您必须始终记住必须使用它们。
猜你喜欢
  • 2019-07-11
  • 2018-10-25
  • 2021-03-23
  • 1970-01-01
  • 2014-03-03
  • 2013-06-26
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多