【问题标题】:Maven/Eclipse plugin: easiest way to have new Maven project have dependency on legacy non-Maven project?Maven/Eclipse 插件:让新的 Maven 项目依赖于遗留的非 Maven 项目的最简单方法?
【发布时间】:2012-11-03 02:29:17
【问题描述】:

我在 Eclipse 中创建了一个新的 Maven 项目。在我需要将依赖项添加到另一个 Eclipse 项目(一个没有 pom.xml 并且没有典型 Maven 项目的目录结构的遗留实用程序项目)之前,这一切正常。 (它具有典型 Eclipse Java 项目的目录结构)。此其他项目与 Maven 项目位于同一 Eclipse 工作区中。

在查看有关此的其他帖子时,似乎通常的解决方案是为其他项目构建 jar 并将其安装在 Maven 中。但是我在 Maven 项目中编写代码时正在积极修改实用程序项目中的代码,所以我不能只安装一次 jar 来满足依赖关系。

处理这个问题的最简单方法是什么,以便我可以在两个项目中同时编码,并且还可以让 maven 干净地构建? (当然 Eclipse 只需要一个项目依赖就可以很好地构建。)

更新

使用 Build Helper 插件将实用程序项目源文件夹添加到我的 pom 是解决方案的可行路径,但是我需要将实用程序项目的所有依赖项更新到我的新 Mavne 项目中,这开始使整个过程太耗时(也不是我想要的依赖链)。我认为如果我添加了所有依赖项,那么 Build Helper 建议就会奏效。

现在,我构建了实用程序项目 jar 并将其安装到 maven 中。结果证明这是最快的解决方案。我将尝试 Mavenize 实用程序项目,而不修改其结构(如下面的 FrVaBe 建议),然后看看我是否可以链接 pom。

我将保持这个问题开放,直到我有一个可以报告的完整解决方案,因为我认为这是其他人会遇到的问题(尝试将遗留项目与新的 maven 项目集成)。

【问题讨论】:

    标签: java eclipse maven


    【解决方案1】:

    对于开发时间,您可以将依赖项添加为System Dependency。在这种情况下,它将通过文件路径(可以是您正在开发的utility.jar文件的路径)来解析。

    按照上面链接中的描述添加,例如:

      <dependencies>
        <dependency>
          <groupId>my-utility</groupId>
          <artifactId>my-utility</artifactId>
          <version>1.0</version>
          <scope>system</scope>
          <systemPath>${somewhere}/lib/my-utility.jar</systemPath>
        </dependency>
      </dependencies>
    

    maven 对系统依赖的处理有时是特殊的。例如。它们不会包含在战争包中!因此,当您完成后,我强烈建议您将实用程序库安装到 maven 存储库或将其部署到存储库管理器(Nexus/Artifactory)。

    【讨论】:

    • 我对 Maven 很陌生 - 你能解释一下如何添加系统依赖项吗?
    • 我尝试添加系统依赖,将&lt;systemPath&gt; 设置为类文件的根文件夹。但是,Maven 似乎希望该路径成为 jar 文件,而不是文件夹。
    • @SamGoldberg 是的,它必须是您的实用程序 jar 文件。如果你想添加不同的源/资源目录,你可以尝试build-helper-maven-plugin,但我不会使用这个项目重叠。
    • 我快速浏览了一下 build-helper-maven-plugin,它可能会解决问题,但几乎没有任何文档(而且我的 eclipse 插件搜索功能不一致,因此 Maven -> add plugin没找到)。我稍后会研究这个(我希望),但似乎不是一个快速的解决方案。 (即我更加摸索以正确引用它,然后测试它是否真的适用于我的场景)。
    • @SamGoldberg 如果您花费太多时间来设置(可能很差)解决方法,最好考虑对您的实用程序项目进行 mavenizing。您可以在不更改为标准 maven 目录布局的情况下执行此操作(尽管建议这样做),主要是覆盖 Super POM 的定义。
    【解决方案2】:

    您可以在 Eclipse 中将实用程序项目的 src 文件夹添加到您的工作项目中。为您的开发目的。

    right click on Working project
    go to properties and choose java build path
    go to source tab
    Add your utility project src folder to that.
    

    稍后您可以将 jar 安装为 maven 依赖项。

    【讨论】:

    • 这已经完成了。但是当我尝试做:mvn test 以确保一切正常时,它失败了,因为它没有解决 Eclipse 项目的依赖关系。我正在尝试找到一种方法,可以将其设置为既可以从 mvn 命令构建,也可以在 Eclipse 中构建。
    猜你喜欢
    • 2012-01-20
    • 2012-04-22
    • 2018-10-28
    • 2011-04-15
    • 1970-01-01
    • 2020-09-14
    • 1970-01-01
    • 2015-01-10
    • 2019-11-07
    相关资源
    最近更新 更多