【问题标题】:Can I configure Eclipse project to rebuild upon jar modification?我可以将 Eclipse 项目配置为在 jar 修改后重建吗?
【发布时间】:2011-11-18 04:20:07
【问题描述】:

似乎当我重建我的 Eclipse 项目之一所依赖的 jar 文件时,Eclipse 没有注意到 jar 已被修改,也没有重建项目。我随后必须进行手动清理构建。

具体来说,我使用this answer 中给出的技术从Eclipse 中构建jar,并将其保存在我的工作区项目之外的目录中。

我使用 jar 作为依赖项而不是让主项目直接依赖于第二个项目的原因是因为主项目在 Java 中,而 jar 项目在 Scala 中。我发现 Scala 的构建速度非常慢,所以我决定关闭项目,并在对 Scala 项目进行更改时从 Eclipse 中手动构建 jar。

缺少“外部 jar 修改”检测是 Eclipse 错误/限制,还是有办法启用此行为?

【问题讨论】:

  • 我认为在 Eclipse 中是否可行。但是像 Maven 或 Ivy 这样的依赖管理系统将在解决这个问题上大有帮助,并且还可以在构建周期中删除不需要的 ide 依赖。
  • 请提供此 jar 所在位置的更多详细信息,或从项目根目录发布 .classpath 文件的内容。
  • @Eugine,我不明白 jar 所在位置的相关性,但它位于我的项目工作区之外的本地目录中,如项目属性设置、Java 构建路径、库选项卡中配置的那样。

标签: java eclipse build jar build-process


【解决方案1】:

问题可能是 jar 在您的 Eclipse Workspace 之外,因此 Eclipse 看不到更改。您需要修改 jar 位置和/或项目的 Java 构建路径配置以将 jar 带入 Workspace。

更好的选择是将该 jar 的源代码作为另一个 Eclipse 项目,并将该其他项目作为依赖项,这样您就不必为每次更改都重新构建 jar。

【讨论】:

  • 因此,如果不是将 jar 放在我的项目之外,而是将它移动到我的项目中,Eclipse 会识别文件修改吗?这似乎是一个奇怪的要求。
  • 其实正好相反,没什么奇怪的。基本上,Workspace for Eclipse 的全部意义在于能够跟踪资源更改,例如用于增量编译。这个jar是资源之一,所以Eclipse需要看到它的变化。
  • 等等,我现在真的很困惑。您是说如果 jar 在我的项目中,Eclipse 不会注意到文件修改,但是如果我将它保留在项目之外,因为它已经存在,Eclipse 应该在 jar 更新时重建?
  • 很抱歉造成混乱。 jar 应该在工作区中,但不一定在您的项目中。但是如果 jar 从 Eclipse 外部更新,您必须刷新工作区中的相应文件夹或在 Preferences / General / Workspace 中启用“自动刷新”。
  • 好的,具体来说,我正在使用this answer 中给出的技术从Eclipse 中构建jar。如果我必须将它保存在我的工作区中,我宁愿不创建一个空项目来保存罐子。您是说如果我将 jar 放入依赖 jar 的项目中,Eclipse 将无法识别更改?
【解决方案2】:

我认为这可能更像是一个工作流程的事情。让 eclipse 随时扫描所有依赖项以进行更改可能是相当重量级的。

如果您没有使用 eclipse 来构建项目的某些部分,那么当您执行任何操作来修改其依赖项时,您应该刷新项目/工作区以让 eclipse 获取更改似乎是合理的。 我使用 maven,所以当我构建时,maven 构建我的代码,分析外部依赖关系并重写我的 .project.classpath 文件。我刷新了我的工作区,一切都是最新的。

我唯一的其他建议是,如果您可以控制对该依赖项的更改,请将源代码作为项目添加到 eclipse 中,并将其添加为 eclipse 中的项目依赖项,而不是 jar 依赖项。

【讨论】:

  • 我使用 JAR 作为依赖项的原因是因为我混合了 Java 和 Scala。我发现 Scala 的构建速度非常慢,所以我决定关闭项目并在每次对 Scala 项目进行更改时从 Eclipse 中手动构建 jar。
【解决方案3】:

除非我完全遗漏了某些内容,否则您只需右键单击项目中的 jar 文件,然后单击“刷新”。它至少可以在 Eclipse Juno 中运行。

【讨论】:

    【解决方案4】:

    我建议使用像 Maven 这样的构建工具来管理这样的依赖项。 Eclipse 支持构建 Maven 项目。

    【讨论】:

      猜你喜欢
      • 2010-09-06
      • 2018-12-02
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-08-10
      • 2013-10-24
      • 1970-01-01
      • 2012-07-02
      相关资源
      最近更新 更多