【问题标题】:How to run Findbugs and PMD on a specific jdk in hudson?如何在 hudson 的特定 jdk 上运行 Findbugs 和 PMD?
【发布时间】:2011-01-21 19:44:45
【问题描述】:


我在 tomcat6 和 jdk 1.5 上部署了 hudson 在 global manage hudson 我配置了 java 1.4 和 java 1.5 对于我的新工作,我选择了 java 1.4 我没有在环境变量中指定 JAVA_HOME

【问题讨论】:

    标签: java ant hudson


    【解决方案1】:

    您的构建使用 Java 1.4 运行。但是,Findbugs 需要 Java 1.5 或更高版本。

    PMD 可以在 Java 1.4 下运行,但默认类需要 1.5。根据 PMD 发行说明,

    “要使用 1.4 运行 pmd,请使用 java14 目录中的文件(编织的 pmd jar 和支持文件)”。

    您可以通过自定义每个步骤的 java 选项将其作为一个两步构建作业来管理。但如果是我,我会让主构建在单独的下游构建中启动 PMD 和 Findbugs 操作。这样,您仍然可以使用 1.4 进行项目构建,但您可以使用 1.5 或 1.6 进行分析(Findbugs 需要 1.5 或 1.6,但它可以分析使用 1.4 编译的代码)。使用 Hudson JDK 定义,这将很容易管理。

    实际上,没有。如果是我,无论如何我都会使用最新的 JDK,只需将目标版本设置为 1.4。

    【讨论】:

    • 感谢您的回复扎克。虽然我在 build.xml 中删除了 findbugs 目标,但我得到了这个异常。首先,我想在哈德逊为 PMD 使用 java 1.4 构建我的项目。后来我可以像你说的那样在下游运行 1.5 上的 findbugs。虽然我选择了 java1.4 作为我在哈德逊的工作,但我得到了上述异常。我需要在 ant 中更改什么吗?
    • 如果使用 1.5 构建会发生什么?它构建成功了吗?另外,如果您删除 FindBugs,您会得到 exact 相同的异常吗?
    • @Sravan 基于堆栈转储的“at org.apache.tools.ant.taskdefs.Definer.addDefinition(Definer.java:583)”部分我猜你有一个 findbugs 仍在您的构建中。如果您要坚持使用 1.4,则需要删除所有 findbugs 痕迹
    • @Sagar 由于不推荐使用的方法,我在 1.5 上构建代码时遇到错误。在删除 FindBugs 后,我也遇到了同样的异常。实际的问题是,我在 hudson configure 中为我的工作指定了 java1.4。但是,它在某处采用 java1.5 并获得 UnsupportedClassVersionError
    • @Zac 在删除所有 FindBugs 的痕迹后,我也遇到了同样的异常。
    【解决方案2】:

    我将-DtargetJDK=1.6 与其他目标一起使用,PMD 插件对我很有效。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-08-21
      • 2015-11-04
      • 1970-01-01
      • 2014-07-23
      • 1970-01-01
      相关资源
      最近更新 更多