我可以解析/ lib文件夹中的依赖项吗? [Maven的]

时间:2013-06-17 14:33:30

标签: maven

今天我试图将Maven“卖”给我的项目团队,但遇到了这个难以理解的用例场景。

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

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

2 个答案:

答案 0 :(得分: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中声明它并将其包含在所有项目中。

答案 1 :(得分:2)

是的,你可以通过设置范围为system的decencies来实现这一点,例如

<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中的依赖关系管理正在消除使用它的很大一部分好处,但不是全部。您仍然可以使用所有测试,报告和发布插件。

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