【问题标题】:Eclipse Project with Dependency Management by MavenMaven 依赖管理的 Eclipse 项目
【发布时间】:2011-08-08 09:24:01
【问题描述】:

我有一个 Eclipse 项目,其中 Maven 管理依赖项。我也有一些不支持 Maven 的 jar 文件,我将它们定位在 src/main/webapp/WEB-INF/lib。我在 Eclipse 中构建/运行项目没有问题。在 Eclipse 中构建项目后,我也可以运行“mvn:package”。但是,在我调用“mvn:clean”之后,如果我运行“mvn:package”,我会得到编译错误,因为它在 src/main/webapp/WEB-INF/lib 下找不到依赖 jar 文件。我需要做的是重建 Eclipse 项目,然后是“mvn:package”。因此,我无法在 Eclipse IDE 之外调用“mvn:package”。

如何解决?

谢谢。

【问题讨论】:

    标签: eclipse maven maven-plugin


    【解决方案1】:

    您必须将未“启用 Maven 的工件”放入适当的 Maven 存储库(Nexus、Artifactory 等等),然后更改您的项目以适当地使用依赖项。此外,要么你做 Maven,要么不做,但两者之间什么都没有。 Maven 是一个构建工具,不仅用于依赖管理。在使用 Eclipse 进行这些更改之后将正常工作(如果您使用 M2Eclipse)。如果您正确使用 Maven,您可以通过 Eclipse 或在命令行中调用 mvn package 来完成这两件事。

    【讨论】:

    • 我们的组织在这个 momont 没有本地 Maven 存储库。我正在使用 m2eclipse,它允许我选择“启用依赖管理”。
    • 尽管如此,它使您的问题比解决它更复杂。所以你应该做出决定:是否使用 Maven。此外,如果您启用了它,您的“不像 Maven”的工件将无法正确解析。所以只需按照我之前的建议将它们放入存储库管理器中。
    • 如果您的项目是使用 Maven 构建的,您应该推动公司范围的存储库管理器安装,例如 Nexus、Artifactory 或 Archiva。对于单个开发者来说非常方便,对于团队来说是必不可少的。
    • 绝对必须安装公司范围的存储库管理器,如前所述。
    【解决方案2】:

    如果您无法设置推荐的环境(maven 存储库),您可以将依赖项作为System dependencies 添加到您的pom.xml

    <project>
      ...
      <dependencies>
        <dependency>
          <groupId>foo</groupId>
          <artifactId>bar</artifactId>
          <version>1.2.3</version>
          <scope>system</scope>
          <systemPath>${basedir}/src/main/webapp/WEB-INF/lib/foobar.jar</systemPath>
        </dependency>
      </dependencies>
      ...
    </project>
    

    【讨论】:

    • 系统范围依赖项适用于项目之外的工件,因此特别不适用于作为项目一部分的工件。在使用 Maven 3.0.X 构建期间,您将收到警告。最好的解决方案是将它们放入存储库托管存储库中。
    • @khmarbaise 我真的知道这不是最佳做法。但是,如果需要一个没有托管存储库的解决方案,并且当您想要与其他人共享您的项目(因此您不仅可以在本地存储库中安装依赖项)时 - 您应该怎么做? (不要误会 - 我喜欢并建议使用托管存储库来构建工件,但是在项目中放置依赖项是不是太糟糕了,因为它也会成为运行系统的一部分?)
    • @K. Claszen,我有许多外部罐子(> 10),我有没有办法将所有罐子包含在一个文件夹下,而不是逐个添加依赖项?谢谢。
    • @CK Lee 据我所知,除了一个一个地添加它们之外别无他法(您的外部 jar 的数量似乎证明您确实应该考虑将它们放置到托管存储库中:-))。
    • 我设法从其他 repo 中找到了一些 jar 文件。现在非 Maven 启用的 jar 的数量剩下 2。我采用你的解决方案。无论如何,我会推动我的 CM 团队在未来遵循 khmarbaise 的回答。
    猜你喜欢
    • 2020-09-14
    • 2013-06-22
    • 1970-01-01
    • 2012-06-03
    • 2011-04-15
    • 1970-01-01
    • 2011-12-25
    • 2011-10-14
    • 2013-09-28
    相关资源
    最近更新 更多