【发布时间】:2013-08-07 12:06:27
【问题描述】:
有一个 jar 文件可以说“abc.jar”,它不存在 maven 依赖项(即使用自己的类的 java 命令创建了一个 jar)。我想将此 jar 添加为 maven 依赖项,以便在构建时它会像其他 maven 依赖项一样自动将该 jar 复制到 lib 文件夹中。我会怎么做。请帮忙。
【问题讨论】:
标签: java maven-2 maven-plugin maven-assembly-plugin
有一个 jar 文件可以说“abc.jar”,它不存在 maven 依赖项(即使用自己的类的 java 命令创建了一个 jar)。我想将此 jar 添加为 maven 依赖项,以便在构建时它会像其他 maven 依赖项一样自动将该 jar 复制到 lib 文件夹中。我会怎么做。请帮忙。
【问题讨论】:
标签: java maven-2 maven-plugin maven-assembly-plugin
一个正常的 maven 依赖总是通过查看存储库来解决的。因此,您必须将 JAR 文件放入存储库中。
您可以安装您的 JAR 到您的本地存储库中。看看install plugin。安装文件目标是您的朋友。
如果其他开发人员也需要这个 JAR(因为他们正在处理同一个项目),他们要么也需要在本地安装它,或者 - 更好 - 你部署 JAR 到远程存储库。看看deploy plugin。这里的 deploy-file 目标是你的朋友。要部署工件,您需要像 Nexus 或 Artifactory 这样的存储库管理器。
但是,依赖项也可能具有系统范围(查看其他答案)。
【讨论】:
您可以在项目的 POM 文件中的 dependency 标记中使用 systemPath 属性。
在你的 pom.xml 中,使用下面的 sn -p 对应abc.jar:
<dependencies>
<!-- Other dependencies -->
<dependency>
<groupId>abc</groupId>
<artifactId>x</artifactId>
<version>1.0</version>
<scope>system</scope>
<systemPath>{path_to_abc.jar}</systemPath>
</dependency>
</dependencies>
此工件对应的scope参数必须设置为system,才能从指定的systemPath拾取工件。
希望这会有所帮助!
【讨论】:
将其添加为具有系统范围的依赖项。 See the docs here.
但是,与其将其添加为系统依赖项,不如将 jar 本身 mavenize 更好,然后您可以构建并将其安装到您的依赖项管理系统中。
另外,请参阅此问题:Can I add jars to maven 2 build classpath without installing them?
【讨论】: