1

今天,我试图向我的项目团队“推销” Maven,但遇到了这个让我难过的用例场景。

用户希望将项目的依赖项存储在 /lib 文件夹中,并从该文件夹中解析其依赖项。

我想知道这是否很有可能。他们不想维护工件存储库服务器。

4

2 回答 2

2

问题是用户为什么要将项目依赖项存储在 /lib 文件夹中?

依赖管理是 Maven 的很大一部分,使用工件存储库允许您将库作为依赖项包含在内,并且只需要管理一个 JAR 实例。如果您有十个项目引用一个 JAR,那么必须在所有这十个项目中维护该 JAR 将意味着 /lib 项目文件夹中有 10 个 JAR 文件。

如果您想升级 JAR 文件,那将是一场噩梦。

不幸的是,如果您想使用 maven 并获得所有好处,那么工件存储库就是您要走的路。


例子

有一个名为 common.jar 的项目库。由项目 A、B 和 C 使用

我创建了一个新项目。如果我想在我的项目中包含 common.jar,我很可能会转到项目 A、B 或 C 并复制并粘贴 JAR。(不是特别可靠的方法)

如果我有一个 Maven 存储库,我只需向 pom 添加一个依赖项

<dependency>
    <group>com.example.group</group>
    <artifactId>common</artifactId>
    <version>1.0</version>
</dependency>

这意味着所有项目都将使用该库的一个中央版本。您甚至可以在父 pom 中声明它并将其包含在所有项目中。

于 2013-06-17T14:38:23.057 回答
2

是的,您可以通过设置范围来做到这一点system,例如

<dependency>
  <groupId>something</groupId>
  <artifactId>something</artifactId>
  <version>2.0</version>
  <scope>system</scope>
  <systemPath>${build.dir}/lib/library.jar</systemPath>
</dependency>

过去,在使用商业 jar 文件时,我不得不使用它,而我工作的客户不允许将商业 jar 放入内部 nexus 存储库中。

正如@cowls 所提到的,不在Maven 中使用依赖管理正在消除使用它的很大一部分好处,但不是全部。你仍然可以使用所有的测试、报告和发布插件。

顺便说一句,我不敢相信有没有使用 Maven 或 Ivy 的 Java 项目。对你有好处,对你的团队不利。

于 2013-06-17T14:40:28.463 回答