【问题标题】:Maven plugin Tycho -> when to use it and when not to use itMaven 插件 Tycho -> 何时使用和何时不使用
【发布时间】:2015-02-26 01:21:57
【问题描述】:

使用 Maven Tycho 插件的目的是什么。我读到here tycho 用于构建 eclipse 插件和 OSGI 包。

问题:- 我们不能只使用普通的旧 maven POM.xml 文件[不使用 tycho 插件] 来构建 eclipse 插件和 OSGI 包。

maven 需要什么 tycho 插件来帮助它构建 eclipse 插件和 OSGI 包?

我们为什么要使用 Maven tycho 插件来构建 eclipse 插件和 OSGI 包?

【问题讨论】:

  • “何时使用/不使用”是广义的,因为正确的答案需要列出所有潜在的用例。 “我们为什么需要一个插件”这个问题是完全正确的——但期待答案只是期待其他人为你做基础研究。

标签: maven osgi maven-plugin pom.xml tycho


【解决方案1】:

当结合 Eclipse(或其他 IDE)使用 maven(或其他命令行构建工具)manifest.mf)时,类路径最终会被写下两次——一次在 pom.xml 中,一次在 Eclipse .classpath 中(或者,对于 OSGi,在目标平台和 manifest.mf 中)。这违反了 DRY 原则。

这个问题有多种解决方案。一种类似于 m2e,您可以在其中使用 pom.xml 生成 Eclipse .classpath。或者,您可以从另一个方向开始,先在 Eclipse 中编译,然后使用 maven 插件将该 Eclipse 设置转换为 maven 构建。这就是 Tycho 所做的,它在 PDE 清单 + 目标平台而不是直接从 .classpath 中工作的额外皱纹。

【讨论】:

  • @holly 感谢您的回复。我有一个快速的问题。我的 Eclipse 中已经有 m2e 插件。当我从 SCM 签出一个 maven 项目(基本上是克隆我的 GIT 存储库)时,克隆过程结束时的 eclipse 会提示我安装 Tycho Project Configuratiors。我读到 Tycho 用 maven 构建了 eclipse 插件。如果我跳过这一步并且不安装 tycho,带有 m2e 插件和 m2e 连接器的 eclipse 是否仍然能够使用独立的 m2e 插件编译我的 eclipse 插件和 OSGI 包??
  • @holly 你上面提到的 m2e 和 tycho 都帮助我们遵循 DRY 原则。假设:- 我们可以使用 m2e 构建 eclipse 插件和 maven 包。那么使用 Tycho 而不是 m2e 来构建 eclipse 插件和 OSGI 包有什么优势吗?我问这个问题是因为 Tycho 网站提到使用 Tycho 的主要目的是构建 eclipse 插件和 OSGI 包。但他们没有说为什么第谷更好?
  • Tycho 和 m2e 都可以用于构建,但我不会同时使用它们。 Eclipse PDE(插件开发环境)旨在支持清单优先的开发风格;您在 manifest.mf 中写下您的依赖关系,Eclipse 会整理出类路径。使用 m2e,您从 maven pom 开始,m2e 从它开始工作以使事情在 Eclipse 中工作。所以他们正朝着相反的方向前进。
  • 你当然可以只使用 m2e 来让你的插件在 Eclipse 中编译,所以这主要是一个问题,你是想在 Eclipse 中进行大部分构建配置并转移到 maven (Tycho),还是开始使用 maven,然后使用 m2e 在 Eclipse 中运行。
  • @user2166888 你可能已经找到了这个,但是vogella.com/tutorials/EclipseTycho/article.html 非常全面。 Tim 和我在Enterprise OSGi in Action 的第 9 章中也有一个关于 Tycho 的部分(以及关于构建 OSGi 项目的更一般性的讨论)。
【解决方案2】:

Maven 没有用于 OSGi 包和/或 Eclipse 插件的built-in packaging type。因此,除非您想使用 jar 封装类型并手动添加 OSGi 细节,否则您需要一个 Maven 插件来帮助您。

Tycho 是添加对构建 OSGi 包的支持的插件之一。

【讨论】:

    猜你喜欢
    • 2015-03-07
    • 1970-01-01
    • 1970-01-01
    • 2015-05-02
    • 1970-01-01
    • 2017-05-04
    • 2011-01-20
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多