与Maven一起安装的包

时间:2008-11-17 17:42:09

标签: maven-2

如何使用Maven安装特定软件包(如derbytools),而不将其指定为项目的依赖项?

2 个答案:

答案 0 :(得分:4)

以下是使用mvn install目标的示例。我用windows风格的env变种来代替你需要提供的参数。

mvn install:install-file -DgroupId=%DERBYTOOLS_GROUP_ID% \ 
    -DartifactId=%DERBYTOOLS_ARTIFACT_ID% \
    -Dversion=%DERBYTOOLS_VERSION% \
    -Dpackaging=jar \
    -Dfile=%DERBYTOOLS_FILE_PATH%

答案 1 :(得分:1)

为了让Maven能够使用jar,需要将jar声明为依赖。

如果您的Maven存储库中尚不存在jar,您可以使用install-plugin的install-file goal将其安装到本地存储库(正如丰富的答案所示)。这将使用您提供的值生成pom,并将pom和jar安装到本地存储库。完成后,您可以将依赖项添加到项目的pom中并正常使用它。

在这种情况下,依赖确实存在于中央Maven存储库中(您可以使用Sonatype public repository btw简单地搜索工件),因此您只需将此依赖项添加到您的POM:

<dependency>
  <groupId>org.apache.derby</groupId>
  <artifactId>derbytools</artifactId>
  <version>10.4.2.0</version>
</dependency>

如果您不想因任何原因安装依赖项,您也可以使用system范围通过它的绝对文件系统路径引用jar。不推荐这种方法,因为它显然会影响可移植性。

来自文档:

  

范围系统的依赖关系始终可用,并且不会在存储库中查找。它们通常用于告诉Maven关于JDK或VM提供的依赖关系。

您可以将您的derbytools jar引用为系统范围的依赖项,如下所示:

<dependency>
  <groupId>org.apache.derby</groupId>
  <artifactId>derbytools</artifactId>
  <version>10.4.2.0</version>
  <scope>system</scope>
  <systemPath>/path/to/derbytools.jar</systemPath>
</dependency>