【问题标题】:maven build process improvementmaven构建过程改进
【发布时间】:2017-10-26 07:43:22
【问题描述】:

我有一个由 18 个模块和一个父项目组成的大项目。这个项目大约需要 1 个小时来构建,为了改进这一点,我们决定使用 maven 配置文件通过设置 4 个不同的 maven 配置文件来减少时间,每个配置文件都有一组项目模块。 父 pom.xml 模块是:

<modules>
    <module>module1</module>
    <module>module2</module>
    <module>module3</module>
    <module>module4</module>
    <module>module5</module>
    <module>module6</module>
    <module>module7</module>
    <module>module8</module>
</modules>

现在是这样的

<profiles>
    <profile>
        <id>main</id>
        <modules>
            <module>module1</module>
            <module>module2</module>
            <module>module3</module>
       </modules>
    </profile>
    <profile>
        <id>profile1</id>
        <modules>
            <module>module4</module>
            <module>module5</module>
       </modules>
    </profile>
    <profile>
        <id>profile2</id>
        <modules>
            <module>module6</module>
       </modules>
    </profile>
    <profile>
        <id>profile3</id>
        <modules>
            <module>module7</module>
            <module>module8</module>
       </modules>
    </profile>
</profiles>

我们正在使用 jenkins 构建项目,并在 maven 选项中提供配置文件名称。这里的问题是我们看到构建花费几乎相同的时间,并且它在日志中显示声纳和三叶草覆盖在整个项目而不是那组模块上运行!知道如何解决这个问题吗?有人有更好的方法吗?

【问题讨论】:

  • 您是否希望在运行profile2 时分析例如模块6?以及运行profile3时要分析的模块7和8?
  • 是的!我尝试在配置文件定义中使用 ,它适用于某些模块,但对于其他模块不起作用,不知道为什么。 pom 也不好看,因为我必须在每个配置文件中都这样做。
  • 第一次真的只有 18 个模块需要 1 小时来构建吗?为什么每次构建都运行声纳?三叶草覆盖率?首先删除声纳分析,因为声纳分析每天只有意义一次。运行没有任何测试(这些测试真的是单元测试吗?)你检查过测试需要多长时间吗?可以很容易地从 jenkins 的日志输出中提取出来......(顺便说一句:配置文件并不是真正的解决方案)......
  • 是的!声纳分析和上传生成的战争/罐子需要很长时间。是的,它只是一个单元测试用例。除了使用配置文件,您还推荐什么方法?

标签: maven jenkins sonarqube jenkins-plugins jenkins-pipeline


【解决方案1】:

虽然exclude a module from analysis 是可能的,但您不会从当前的方法中获得您想要的结果。这是因为您希望对项目的每个子集执行 SonarQube 分析。您可能希望每个子集在 SonarQube 中显示为不同的可浏览项目。但这不会发生。因为每次分析都将使用相同的项目 ID 进行,所以每个配置文件都将覆盖之前的分析。

由于您的项目似乎包含 4 个独立的子集,因此我建议您实际上将项目分成 4 个独立的子集,每个子​​集都有自己的项目 ID、测试和分析。

【讨论】:

  • 分析发生了两次,一次在配置文件模块上,第二次在整个项目上。如果我选择一个配置文件以进行更快的开发测试,我想我会禁用它,我们会考虑在未来分解它。
  • 我注意到一件事,一些 maven 插件存在并发问题,如果正在进行任何其他构建,这将阻止构建过程,因此这也是我们必须解决的问题。
【解决方案2】:

你可以在maven中试用parallel builds

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2010-09-06
    • 1970-01-01
    • 2013-07-15
    • 1970-01-01
    • 1970-01-01
    • 2017-07-09
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多