问题标签 [shadowjar]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
326 浏览

android - 我们能否构建一个具有 v3 依赖项的 AAR,而不会与 v2 的客户端应用程序依赖项发生冲突?

我们想要生成一个 Android 存档库 (AAR) 并分发给我们的客户。在这个 Android 库中,我们使用了一些第三方依赖项,我们希望保护它们免受任何版本冲突。我们也不希望将依赖项自动更新到最新版本。

例如这种情况:我们正在使用(并且需要)版本 3 的依赖项和相同依赖项的客户端版本 2 - 由于某种原因,这些版本不兼容,我们的客户端无法更新到版本 3。或者这样:客户端还使用来自另一个提供程序的 AAR,该提供程序又使用版本 2 的依赖项 - 并将其更新到版本 3 会破坏另一个 AAR。要求软件链的每个部分都与相同的依赖版本兼容并不总是可能的。

使用普通 JAR 时,可以通过使用ShadowJar在构建步骤中包含并重新定位依赖项来轻松避免这种情况。但是对于 AAR,我发现的最佳方法是根据以下内容创建自定义 gradle ShadowJar 任务:https ://github.com/johnrengelman/shadow/issues/183 并在编译实际 AAR 之前执行重新定位步骤。但这使得你的应用源文件需要直接导入重定位的依赖,即:import relocated.org.com.dependency。

然而,这不是我们认为的 AAR:s 常见问题场景的最佳解决方案,如上所述。在构建 AAR 时,我们希望在开发阶段之后进行迁移步骤。我还没有找到令人满意的方法来做到这一点。真的没有更好的解决方案吗?

0 投票
1 回答
331 浏览

kotlin - Shaddow Jar 缺少依赖项中的一些 Vert.x 类

我已经使用 Kotlin 协程扩展成功创建了一个带有少量 verticles 的 shadow-jar,并且能够通过vertx run命令行运行它们,同时指定我的 jar 的路径,除了一个在其启动时创建 telnet shell 的 Verticle 异常:

我的项目是使用 Gradle (Kotlin DSL) 构建的

这些是我的 vert.x 依赖项:

我的影子罐子任务配置如下:

似乎minimize()不是问题,但重要的是,如果我从main函数 evrything 以编程方式部署该垂直,并且我得到了 telnet shell。

也许我在影子 jar 任务的清单配置中遗漏了一些东西?

0 投票
1 回答
639 浏览

gradle - 如何从 ShadowJar 的配置文件夹中排除所有文件

我想从/conf文件夹中排除所有配置 xml文件。但是,使用下面的 shadowJar 设置(参见第 *** 行),我仍然看到 names.xml(这是 /conf 下的 xml 文件)包含在 jar 中。

如果我专门排除 names.xml 文件。我看不到它,但我必须将每个文件排除在 /conf 文件夹下。

有没有办法我可以使用排除“conf/*.xml”之类的东西来实现这一点?

我的项目结构如下:

我的 shadowJar 定义是:

我是shadowJar的新手,我尝试了几种方法来排除文件夹下的文件,但没有运气,有人可以给我提示吗?

0 投票
2 回答
757 浏览

java - 使用 Shadow 重定位的包中的 Kotlin 属性不起作用

我正在尝试使用以下 Gradle 配置重新定位带有Shadow的包(具体来说是 OkHttp 4):

(我省略了buildscript部分,重要的是使用的 Shadow 版本是5.1.0. 包前缀等也已更改)

这在 OkHttp 3.12.0 及更早版本(纯 Java)之前有效。现在 OkHttp 4 是用 Kotlin 编写的,我在使用属性时遇到了麻烦,特别是在 Kotlin 代码中。当从 Java 中使用时,重新定位的 OkHttp 工作得很好。但是访问 Kotlin 中的属性,如下所示:

...导致异常:

java.lang.NoSuchMethodError: No virtual method getCache()Lmy/prefix/okhttp3/Cache; in class Lmy/prefix/okhttp3/OkHttpClient; or its super classes (declaration of 'my.prefix.okhttp3.OkHttpClient' appears in /data/app/redacted.redacted-0yalPGR5aw0RSY2Zdxnq7Q==/base.apk)

如您所见,该应用程序是一个 Android 应用程序,以防万一。

任何想法我的配置可能有什么问题?

0 投票
0 回答
302 浏览

java - 如何使用 gradle 从依赖项中排除嵌套类?

有人可以告诉我如何从依赖项中排除嵌套类,或者如果使用 gradle 甚至可以。这就是我基本上想要做的事情,我的 jar 使用来自依赖项的代码,该依赖项在构建时编译到 jar 中,并且路径被重新定位,该部分工作正常,但我使用的类有几个我不需要的嵌套类,所以我正在寻找一种方法来排除那些嵌套类。

我试过这样做,但它并没有改变任何东西,我仍然可以在我的 jar 中获得完整的课程。

0 投票
1 回答
211 浏览

gradle - Gradle ShadowJar:包含递归依赖

我曾经shadowJar在我的 JAR 中包含我的依赖项

问题是它没有添加我依赖的所有依赖树,我不知道为什么。

有人知道吗?

0 投票
1 回答
26 浏览

gradle - 如何解决安装 warp10-ext-influxdb 插件时的 gradle shadowJar 问题?

我想使用“warp10-ext-influxdb”插件来与 influxdb 集成,获取数据并在 warp10 中进行分析。我按照这个链接继续安装插件。但是,我无法使此命令“gradle shadowJar”正常工作。报错,我附上截图

有人可以帮我吗?如果有任何文档可以在屏幕截图的帮助下详细说明安装过程,这样它会帮助像我这样的新手,那就太好了。我已经广泛搜索了解决方案,不幸的是我找不到任何解决方案。提前谢谢了。

0 投票
0 回答
126 浏览

gradle - 尽管在根项目中配置了子项目,但无法找到子项目的任务 :shadowJar

我有一个项目结构像

我想要的是能够编译一个胖罐子,其中包括客户端+共享+依赖项以及服务器各自的依赖项。

我有这个用于根项目的 build.gradle 和用于所有子项目的空构建脚本,但我无法为 :client 子项目找到任务 :shadowJar。执行gradle :client:shadowJar结果

FAILURE:构建失败并出现异常。

*出了什么问题:在根项目“客户端”中找不到任务“shadowJar”。

我如何使任务 :client:shadowJar 像我期望的那样工作?或者我如何进行这个多项目构建?正如您在我提供的 build.gradle 中看到的那样,我还考虑为根项目执行单独的任务,但我不明白,我应该如何处理任务以按照要求的方式运行。感谢我遇到的问题的任何建议和解决方案!

0 投票
1 回答
1002 浏览

gradle - 如何在没有 shadow pom 的情况下发布 Gradle shadow jar

我使用影子 jar 插件 ( https://github.com/johnrengelman/shadow ) 创建一个额外的 jar 文件,其中包含我所有的依赖项。我还想保留只有我的代码和资源的默认生成的 jar。在发布 jar 之前,这非常简单明了。

由于我的影子 jar 里面有它的所有 deps,它的 pom 文件在发布方面对我来说不是优先事项。但是,如果我按照 shadowJar 插件文档中的说明进行操作(https://imperceptiblethoughts.com/shadow/publishing/#publishing-with-maven-publish-plugin

我最终得到了两个不同的 pom 文件(一个用于常规 jar 文件,一个用于影子 jar)发布到同一个URL,其中一个覆盖另一个。此行为会导致客户下载默认 jar,但 pom 文件中没有任何依赖项。

我尝试了很多方法来禁用 shadowJar pom 文件,但没有任何成功。我如何让它工作?

0 投票
0 回答
228 浏览

android-studio - shadow jar 以避免在 android studio 中的依赖重复

我正在 android studio 中构建一个 android 应用程序,但遇到重复依赖项的问题。

Duplicate class javax.inject.Inject found in modules jetified-javax.inject-1.jar (javax.inject:javax.inject:1) and jetified-javax.inject-2.5.0-b42.jar (org.glassfish.hk2.external:javax.inject:2.5.0-b42)

这两个依赖项对我来说都非常有用,我尝试从它们中的任何一个中排除有问题的依赖部分,这最终破坏了一个或另一个。

我一直在阅读关于影子罐子的文章,据我所知,这听起来像是一颗神奇的子弹,所以我试了一下。从我读过和听到的内容来看,您只是将其添加为依赖项,它神奇地修复了所有内容。我尝试添加它,但我仍然收到错误,但我在网上阅读,如果您希望它在大量工作的情况下工作,则必须拥有 java 或 groovy 插件。这些中的任何一个都让 android studio 非常不高兴,因为 android 有自己稍微修改过的 java 或其他东西。

非常感谢有关如何使影子 jar 工作的建议,但如果有人有任何其他解决方法可以让我继续使用我希望听到的两个冲突的依赖项。如果我犯了一些新手错误,我很抱歉。

我的毕业档案