Java 如何在指定工件时自动引入具有依赖项的jar

Java 如何在指定工件时自动引入具有依赖项的jar,java,maven,Java,Maven,我有一个我的项目所依赖的jar,但是在这个库中也有一个实用程序,但是为了让这个实用程序工作,我需要主jar所依赖的所有依赖项 库的创建者为它提供了jar-with-dependencies.jar文件,该文件也位于中央maven repo中 但是,当我简单地指定groupId/artifactId/version时,我在.m2/repository目录中看到的只是主jar,而不是带有依赖项的jar 如何自动下载该库的jar及其依赖项.jar?当我在我的pom.xml中将该库指定为依赖项时,是否指

我有一个我的项目所依赖的jar,但是在这个库中也有一个实用程序,但是为了让这个实用程序工作,我需要主jar所依赖的所有依赖项

库的创建者为它提供了jar-with-dependencies.jar文件,该文件也位于中央maven repo中

但是,当我简单地指定groupId/artifactId/version时,我在
.m2/repository
目录中看到的只是主jar,而不是带有依赖项的
jar


如何自动下载该库的
jar及其依赖项.jar
?当我在我的
pom.xml
中将该库指定为依赖项时,是否指定了一些特殊的内容?

如果您尝试添加的依赖项遵循标准的Maven命名约定,则在声明依赖项时可以使用分类器选项。 下面是一个例子

<dependency>
    <groupId>com.group</groupId>
    <artifactId>artifact</artifactId>
    <version>1.0.0</version>
    <classifier>jar-with-dependencies</classifier>
</dependency>

com.group
人工制品
1.0.0
带有依赖项的jar

这将从存储库中获取REPO_PATH/com/group/artifact/artifact-1.0.0-jar-with-dependencies.jar。

这里还值得一提的是注意事项;如果没有很好地理解所包含的内容,那么添加这些内容可能会导致类路径中具有相同库的多个(可能不兼容)版本。这可能导致以后难以诊断错误。最佳实践是在您自己的项目中包含依赖项,并处理版本差异。对于存储库来说,每个库都在“jar”版本和“jar中包含依赖项”是常见的吗?我在这方面没有太多经验,但我假设没有。然后使用分类器“jar with dependencies”将不起作用,因为它只能获取存储库中存在的内容。@Gus我实际上不需要它成为类路径的一部分。我只需要用户下载它,这样他们就可以使用它作为一个可执行的java-jar。它就像一个支持工具来生成特定类型的文件。我想,最好只是提供一个链接,让用户直接从maven central下载??@Ramu Gudelli谢谢!我认为使用分类器这样做实际上会将jar添加到类路径中。不是我想要的。我只想把它下载到.m2/repository目录中。用户必须手动执行
java-jar~/.m2/repository/…
。我只是想知道maven是否有办法在它拉下主罐子后自动拉下来。我不希望它出现在类路径中through@user1902183抱歉,未完成时意外输入了最后一条评论。如果您只需要将带有依赖项的jar下载到本地存储库,那么可以使用maven插件。您可以在pom.xml中配置插件(见下文),以便在项目构建期间下载该文件。下面是两个不同插件的链接,文档应该会让您了解如何使用它们。正确的方法是创建一个空的maven项目,将库添加为依赖项,并添加插件,使用库独立util的主类构建一个具有依赖项的jar。