Java 如何在maven中包含加载其他jar的jar?

Java 如何在maven中包含加载其他jar的jar?,java,maven,jar,Java,Maven,Jar,我正在NetBeans中开发一个Java应用程序,并使用maven作为依赖项。我有一堆罐子放在文件夹里。这些jar加载位于其已知路径中的其他jar。在我看来,当我在maven中加载本地jar时,它实际上是在将jar复制到另一个位置。问题是移动的jar再也找不到其他jar了,因为现在到它们的jar的相对路径被破坏了。 是否有可能使用maven,使包含的jar不会从原来的位置移动,以便它们可以找到其他jar?或者如果这不可能,有没有办法给maven一个包含子文件夹的整个文件夹,如果maven移动整个

我正在NetBeans中开发一个Java应用程序,并使用maven作为依赖项。我有一堆罐子放在文件夹里。这些jar加载位于其已知路径中的其他jar。在我看来,当我在maven中加载本地jar时,它实际上是在将jar复制到另一个位置。问题是移动的jar再也找不到其他jar了,因为现在到它们的jar的相对路径被破坏了。 是否有可能使用maven,使包含的jar不会从原来的位置移动,以便它们可以找到其他jar?或者如果这不可能,有没有办法给maven一个包含子文件夹的整个文件夹,如果maven移动整个文件夹,它也会移动所有包含JAR的子文件夹? 我不确定我是否足够清楚。我也是马文的新手。在我看来,ant在这方面更灵活


编辑:看了评论后,我似乎不是很清楚。基本上,我工作的公司有两个应用程序,它们共享一些常用的jar,并使用URLClassLoader加载其他jar。我不想再次分发这些常见的jar,我希望我的第二个应用程序从第一个应用程序放置它们的位置查找并加载这些jar。我找到了一个解决方案,使用maven导入一个jar,该jar使用带有硬编码路径的URLClassLoader加载其他jar。

我有一个模块,pom文件开头包含以下行:

<groupId>com.domain.project</groupId>
<artifactId>MyFirstProgect</artifactId>
<packaging>jar</packaging>
<version>1.2.3-snapshot</version>
com.domain.project
我的第一个项目
罐子
1.2.3-快照
编译完这个项目后,maven将把它放到本地存储库中(我的位于C:\Users\MyUser.m2\repository中,在linux中它应该位于/home/MyUser/.m2/repository中)

之后,我可以在第二个项目中添加一个依赖项,如下所示:

    <dependency>
        <groupId>com.domain.project</groupId>
        <artifactId>MyFirstProgect</artifactId>
        <version>1.2.3-snapshot</version>
    </dependency>

com.domain.project
我的第一个项目
1.2.3-快照
对我来说,这对我有帮助。
但这将导致整个第一个项目作为依赖项添加。因此,这可能不是最适合您的解决方案。

您的目标是拥有一个包含所有依赖项的jar,以便以后运行吗?也许你应该检查一下:系统路径上的依赖关系可能存在重复,看看这个答案这些神秘的jar是否使用Java
URLClassLoader
类从其他未命名的jar加载类?那么你是想保留这条路让后门黑客继续生存?谢谢大家的评论。我在原来的帖子中添加了一个编辑部分。在jbarrueta:我希望避免重新分发普通jar,无论是在主jar内部还是外部。在durron597:我希望避免重新分发依赖项jar。在arghtype:我希望避免手动导入pom文件中的每个jar(有很多jar)。在chrislott:是的,我使用的是URLClassLoader,但我并没有试图让任何后门黑客存活下来。你这么做并不意味着每个人都这么做。谢谢你,德米特里。作为一个依赖项的整个项目不会是一个问题。但是,如果第一个项目使用maven,那么您的解决方案是好的。然而,在我的案例中,第一个项目使用ant并在maven未知的任意位置创建JAR。我会将你的答案标记为解决方案,因为它是最接近我所寻找的。欢迎你并感谢你将我的答案标记为回答!