Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/maven/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java Maven多模块&x2B;程序混淆_Java_Maven_Proguard_Obfuscation - Fatal编程技术网

Java Maven多模块&x2B;程序混淆

Java Maven多模块&x2B;程序混淆,java,maven,proguard,obfuscation,Java,Maven,Proguard,Obfuscation,我正在将一个带有proguard模糊处理的java netbeans项目从ant转移到maven多模块。我是maven的新手,在阅读和尝试了很多解决方案和架构几天后,我仍然很迷茫 从我所看到的情况来看,有几种方法可以构建我的项目: option 1: option 2: module top module top module A module A module B

我正在将一个带有proguard模糊处理的java netbeans项目从ant转移到maven多模块。我是maven的新手,在阅读和尝试了很多解决方案和架构几天后,我仍然很迷茫

从我所看到的情况来看,有几种方法可以构建我的项目:

option 1:                   option 2: 
module top                   module top
   module A                     module A
   module B                     module B
   module C                     module C
                                module assembly
模块之间有内部依赖关系。 “moduletop”是一个代码很少的模块,它充当包装器。 在选项1中,用于打包项目的pom.xml位于“模块顶部”。 在选项2中,“模块组装”没有逻辑,只有用于打包项目的pom.xml

我的目标是将项目打包到一个胖jar中,其中内部模块将使用proguard插件进行模糊处理

到目前为止,我所尝试的:

我设法混淆了一个模块,但由于模块相互依赖,我需要保留整个接口结构,否则模块在包装在一起时就不适合

我已经为整个项目创建了一个胖jar文件,并使用proguard对其进行了模糊处理。因为它是一个大文件,大约2000万,所以这个过程花费了很多时间,大约15分钟。输出文件很小,大约4米,无法工作

现在,我正试图在构建过程中将所有代码组装到分发jar中,并将其与库jar分离。我的目标是只混淆我的模块,稍后再添加库(这是我在当前的ant项目中看到的对我有用的东西)

到目前为止,我所有的尝试都没有产生一个有效的过程。我不能附加pom文件,因为我在尝试新东西时一直在更改它们

总而言之,我认为有以下几种选择:

  • 分别构建并混淆每个模块,将它们合并到顶部模块中,同时保留接口
  • 将我的所有模块组装并混淆在一起,与库分开
  • 构建一个巨大的fat文件,并将其作为一个整体进行模糊处理
  • 在“模块顶部”内或使用专用“模块组件”进行包装
  • 你推荐什么?任何帮助都将不胜感激

    编辑

    我有一个小小的突破。使用option2和proguard GUI,我最终成功地创建了一个工作模糊的jar。第一步,我运行maven dependency插件,将依赖项复制到lib文件夹

    然后在proguard GUI中,我“输入”了所有模块,“libraryjar”了所有其他模块,并创建了dist-obsfucated.jar

    我当前的ModuleAssemble结构如下:

    project
        target
           dist-obsfucated.jar
           lib
             moduleA.jar 
             moduleB.jar 
             moduleC.jar 
             other_file1.jar
             other_file2.jar
    
    如何将所有jar组装到一个可执行jar中?我需要告诉汇编插件忽略lib文件夹中未提示的模块A到C

    编辑#2


    我设法用“maven antrun插件”解决了这个问题。

    首先,在不混淆的情况下构建您的项目,并确保一切正常。因为maven和ant完全不同。多模块maven项目是您必须应对的另一个挑战。毕竟,您应该非常熟悉maven来完成多模块项目的模糊处理。事实上,在我有足够的maven经验之前,我并不建议这样做。我不确定是否有帮助,但我找到了那个链接,谢谢你的回答。没有maven的项目是可行的。我甚至成功地生成了一个胖jar文件。我看过你提到的链接,但它没有真正提到他最终是如何解决这个问题的。正如我所说,这里有完全不同的挑战需要克服。maven,多模块,模糊处理。所以,一次尝试一个,否则这真的会是一场噩梦。我在6-7年前就这样做过。我们有一个多模块的网络项目。据我记忆所及,我们分别混淆了每个罐子。但它花了将近一个月的时间才运行起来,我们对maven很满意。大部分时间用于proguard配置。首先,在不混淆的情况下构建项目,并确保一切正常。因为maven和ant完全不同。多模块maven项目是您必须应对的另一个挑战。毕竟,您应该非常熟悉maven来完成多模块项目的模糊处理。事实上,在我有足够的maven经验之前,我并不建议这样做。我不确定是否有帮助,但我找到了那个链接,谢谢你的回答。没有maven的项目是可行的。我甚至成功地生成了一个胖jar文件。我看过你提到的链接,但它没有真正提到他最终是如何解决这个问题的。正如我所说,这里有完全不同的挑战需要克服。maven,多模块,模糊处理。所以,一次尝试一个,否则这真的会是一场噩梦。我在6-7年前就这样做过。我们有一个多模块的网络项目。据我记忆所及,我们分别混淆了每个罐子。但它花了将近一个月的时间才运行起来,我们对maven很满意。大部分时间用于proguard配置。