java - 一种禁用动态加载的 JAR 之间共享 Gradle 依赖关系的方法

标签 java maven gradle dependencies

我编写了 Java“包装器”应用程序,该应用程序从 Web 下载实际的应用程序 JAR。基本上它是一个自动更新程序。然后,应用程序 JAR 由包装器 JAR 加载并执行其入口点函数,如下所示:

Class<?> classObject = this.getClassObject();

Method method = classObject.getMethod("run", String[].class);

method.invoke( classObject.newInstance(), (Object)this.getArgs().toArray( new String[0] ));

如果像这样加载应用程序 JAR,那么应用程序 JAR 和包装器 JAR 似乎都共享相同的依赖项。有没有办法让它们之间不共享依赖关系?

我打算自动更新。与安装的应用程序 JAR 相比,包装器 JAR 可能具有不同版本的依赖项。这意味着,如果某个依赖项有更新,我必须更新包装器和应用程序 jar,这违背了自动更新系统的目的。

最佳答案

通过添加 Shadow jar 插件并将这些冲突的依赖项重新定位到另一个命名空间来解决它。

关于java - 一种禁用动态加载的 JAR 之间共享 Gradle 依赖关系的方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60966500/

相关文章:

android - assembleDebug 后复制 AAR

java - 如何使用Java泛型方法?

java - 如何在jpanel上延迟显示图片?

java - IntelliJ Idea不下载maven依赖项

android - Android Studio 3 Canary中 Unresolved reference

android - 在裸机 react native 项目中安装 expo 后,我收到此错误

java - Java 构造函数在调用时是否返回对象或对象的 ID?

java - 单一方法的内存泄漏

eclipse - Maven中pom.xml的用途是什么?

maven - mvn 应用引擎 :update will not deploy due to permissions error