当前位置: 首页 > 知识库问答 >
问题:

Gradle ShadowJar输出包含模糊和非模糊类

郁高韵
2023-03-14

在我简单的gradle构建中,我想使用暗影罐和ProGuard一起。我发现了一些例子,其中shadowJar任务的输出是proguard任务的输入,这很好地工作,但是在我的例子中,我希望首先创建一个小的模糊jar,首先我很好地指定库依赖关系,让proguard只关注我的代码,然后我想把它传递给shadowJar插件进行fatjar打包。

task obfuscate(type: proguard.gradle.ProGuardTask) {
    injars jar
    outjars "build/libs/foo-${project.version}-pg.jar"
    ...
}

shadowJar {
  from obfuscate
  configurations = [project.configurations.embed]
}

shadowJar.dependsOn obfuscate

我的问题是shadowJar输出包含所有未混淆的库(fine)、我的混淆代码(fine)和我的未混淆代码。所以不知何故,最初的类偷偷溜进来了,我不知道这是怎么发生的。我无法指定shadowJar将依赖项和proguard输出jar打包在一起。

你看到我的方法的问题在哪里了吗?

共有1个答案

富凯风
2023-03-14

试试这个,对我有效:

task shadowJar2( type: com.github.jengelman.gradle.plugins.shadow.tasks.ShadowJar ) {
    baseName = jar.baseName
    from obfuscate
    configurations = [project.configurations.embed]
    classifier = 'shadow'
    //version =
}

问题是默认的shadowJar任务除了使用模糊+library jar之外,还要使用您的“main”源集。通过定义您自己的自定义“ShadowJar2”任务,您显式地定义了您的源代码,在本例中,源代码只是JAR('obfuscate'+'embed'),而不是源集。

 类似资料:
  • 注意: Internet Explorer和Safari不支持SVG滤镜! <defs> 和 <filter> 所有互联网的SVG滤镜定义在<defs>元素中。<defs>元素定义短并含有特殊元素(如滤镜)定义。 <filter>标签用来定义SVG滤镜。<filter>标签使用必需的id属性来定义向图形应用哪个滤镜? SVG <feGaussianBlur> 实例 1 <feGaussianBlu

  • 本文向大家介绍模糊化和反模糊化之间的区别,包括了模糊化和反模糊化之间的区别的使用技巧和注意事项,需要的朋友参考一下 模糊化 模糊化可以被定义为将清晰集转换为模糊集或将模糊集转换为模糊集的过程。基本上,此操作会将准确的明晰输入值转换为语言变量。 模糊化 模糊化可以定义为将模糊集简化为清晰集或将模糊成员转换为清晰成员的过程。 我们已经研究了模糊化过程涉及从清晰数量到模糊数量的转换。在许多工程应用中,必

  • [ ] 查询包含马的学生 // 查询姓名包含马的学生 const { field = '' } = ctx.query const fields = field.split(';').filter(f =&gt; f) Student.findAll({ attributes: fields.length === 0 ? '' : fields, where: { name:

  • If you take a look at Cheat Sheet, you’ll find that there are too many CSS snippets to remember. Also, some of them might be a bit lengthy for sake of logical separation. 看一看 速查表,会发现要记的 CSS 代码片断太多了。一些

  • 这一章将会演示教你如何写一个属于自己的Fuzz测试脚本,当我们进行exploit研究和开发的时候就可以使用脚本语言发送大量的测试数据给受害者机器,但是这个错误数据很容易引发应用程序崩溃掉。而Python却不同,当程序崩溃之后,此时你的程序会暂时断开连接,随后会立即创建一个新的连接继续执行。 下面我们首先要解决的问题是应用程序如何处理用户输入的内容,因为在进行模糊测试的时候,我们会不定时的想到一些新

  • 问题内容: 基本上 在一个活动中,我有一个ListView。当我选择一个项目时,一个透明活动将作为一个小框打开。出现此框时,您仍然可以查看以前的活动屏幕, 我要弄清楚的是如何使上一个屏幕变得模糊,例如此处链接的图像(忽略UI,只看模糊的草皮区域)。 这怎么可能? 感谢您的任何建议。 问题答案: 对于API <14,您可以使用该标志,但是已弃用该标志,并且高级API不再支持内置模糊处理 但是,您可以