【问题标题】:How to read Jenkins console SVN output in the Maven MOJO如何在 Maven MOJO 中读取 Jenkins 控制台 SVN 输出
【发布时间】:2015-04-29 12:29:06
【问题描述】:

我有一个 Jenkins 工作,它将首先从 SVN 存储库更新代码,然后我需要在我的 Maven 插件中处理来自 SVN 的更新文件。

那么,如何从 Jenkins 获取更新的文件列表到我的 MOJO(扩展 org.apache.maven.plugin.AbstractMojo)类中?

我认为这样做的一种方法是读取 Jenkins 控制台,其中打印 SVN 日志并解析该控制台输出并获取更新的文件列表。但我认为会有更好的方法来做到这一点。

谢谢。

【问题讨论】:

  • 你能详细说明你到底想要做什么吗?我们在谈论增量构建吗?
  • @khmarbaise 我在 jenkins 有一个夜间构建工作。工作是首先运行 SVN 更新,然后运行我自定义的 maven 插件工作。在我的 Maven 插件(MOJO)中,我需要从 SVN 获取更新文件的列表。
  • 我知道你有自己的MOJO,但是这个MOJO的目的是什么?另一方面,你可以看看SCM component ?
  • @khmarbaise 感谢您的评论。在 MOJO 中,我基本上对文件进行编译,这些文件是自定义程序文件。编译器在 MOJO 中。所以现在我每晚都在编译沙箱中的所有文件,但要求是只编译被更改的文件。所以,我需要一个在 SVN 存储库中更改的文件列表。

标签: svn jenkins maven-3 hudson maven-plugin


【解决方案1】:

因此您需要记录文件的状态,然后您需要检查哪些文件已更改。这里的问题是:您将被称为 rev 3,下一次您将被称为 rev 7,但更新(拾取更改/新文件)已经由(例如)Jenkins 完成,现在您需要知道哪些文件已被更改/添加?这只能通过使用存储在目标文件夹中的一些补充信息(例如文件的指纹)来完成,这些信息已像 maven-compiler-plugin 一样进行检查。阅读 SVN 会让你回到同样的问题?你第一次被叫到哪个州?

您需要存储有关上次更新的信息...所以将修订号存储在某处?下次您将被调用时将其与存储的进行比较,您可以决定要做什么......

更好的是在文件库上执行此类操作,这样您就可以独立于 SCM 系统...但它不会改变以某种方式识别已更改的文件的需要...

不妨看看http://maven.apache.org/shared/maven-shared-incremental/ 或许值得...

此外,您需要实现一种影响分析来检查您更改 A 类(让我们在 Java 中这么说)但 B 类使用 A 类,因此您并非总是需要编译 B 类……有特殊情况要考虑... 配置等其他信息(例如 pom 文件更改)的影响如何?

【讨论】:

    猜你喜欢
    • 2019-04-02
    • 1970-01-01
    • 1970-01-01
    • 2015-01-04
    • 1970-01-01
    • 2013-05-29
    • 1970-01-01
    • 2011-05-15
    • 1970-01-01
    相关资源
    最近更新 更多