【发布时间】:2015-06-27 18:06:53
【问题描述】:
我正在 NetBeans 中开发一个 Java 应用程序并使用 maven 作为依赖项。我在一个文件夹中有一堆罐子。这些 jar 加载位于它们已知路径中的其他 jar。在我看来,当我在 Maven 中加载本地 jar 时,它实际上是将 jar 复制到另一个位置。问题是移动的罐子再也找不到其他罐子了,因为现在它们罐子的相对路径被破坏了。 是否可以使用 maven 使包含的罐子不会从原来的位置移动,以便他们可以找到其他罐子?或者如果这是不可能的,有没有办法给 maven 一个包含子文件夹的整个文件夹,如果 maven 移动整个文件夹,它也会移动所有子文件夹和里面的 jar? 我不确定我是否足够清楚。我也是 Maven 的新手。在我看来,ant 在这方面更灵活。
编辑:阅读 cmets 后,我似乎不是很清楚。基本上,我工作的公司有两个应用程序,它们共享一些使用 URLClassLoader 加载其他 jar 的常见 jar。我不想再次分发这些常见的罐子,我希望我的第二个应用程序从我的第一个应用程序放置它们的位置找到并加载这些罐子。我找到了一个解决方案,方法是使用 maven 导入一个 jar,该 jar 使用带有硬编码路径的 URLClassLoader 来加载其他 jar。
【问题讨论】:
-
您的目标是拥有一个包含所有依赖项的 jar,以便以后运行吗?也许你应该看看这个:stackoverflow.com/questions/16222748/…
-
可能依赖于系统路径,请参阅此答案stackoverflow.com/a/765032/2417043
-
这些神秘的 jar 是否使用 Java
URLClassLoader类之类的东西从其他未命名的 jar 中加载类?所以你试图保留让后门黑客存活的路径? -
感谢大家的cmets。我在原始帖子中添加了一个编辑部分。在 jbarrueta:我希望避免重新分配常见的罐子,无论是在主罐子内部还是外部。在 durron597:我希望避免重新分发依赖 jar。在 arghtype:我希望避免手动导入 pom 文件中的每个 jar(有很多 jar)。在 chrislott:是的,我正在使用 URLClassLoader,但我不想让任何后门黑客保持活跃。你这样做并不意味着每个人都这样做。