ProGuard的Maven插件配置

Maven 项目代码混淆:ProGuard 集成指南 你是否遇到过这样的困扰?辛苦开发的 Java 项目打包成 JAR 后,别人用 JD-GUI 等工具轻松反编译,直接“复制粘贴”你的核心代码?代码混淆(Code Obfuscation)正是解决这一问题的关键技术。本文聚焦Maven 项目与 ProGuard 的集成,覆盖基础概念、配置流程、实战案例及常见问题,帮你为项目穿上“加密外衣”。本文按“概念→配置→实战→问题”的逻辑展开:先通过故事理解代码混淆的必要性,再拆解 ProGuard 核心功能;接着手把手教你在 Maven 中集成插件,编写混淆规则; 阅读详情

Java代码混淆工具ProGuard是比较流行的,集成到Maven中需要使用相关插件。

通过比较,笔者认为IDFC Maven ProGuard Plug-in是较好些(也是ProGuard官方推荐)。

下面是pom的一个配置示例,这个示例是对项目中一个公共lib(有其特殊性)进行混淆,除了plugin之外的配置,还有一个.pro的配置文件(存放在${basedir}/src/main/config/${project.artifactId}-maven.pro)。

			<plugin>
				<groupId>com.idfconnect.devtools</groupId>
				<artifactId>idfc-proguard-maven-plugin</artifactId>
				<version>1.0.1</version>
                <executions>
                    <execution>
                        <phase>package</phase>
                        <goals>
                            <goal>obfuscate</goal>
                        </goals>
                    </execution>
                </executions>
				<configuration>
					<inputFile>${project.build.outputDirectory}</inputFile>
		            <libraryJarPaths>
	                    	<libraryJarPath>${java.home}/lib/jce.jar</libraryJarPath>
	                </libraryJarPaths>
	                <excludeManifests>false</excludeManifests>
	                <excludeMavenDescriptor>false</excludeMavenDescriptor>
		             <outputArtifacts>
			             <outputArtifact>
				             <file>${project.build.finalName}.${project.packaging}</file>
			             </outputArtifact>
		             </outputArtifacts>
				</configuration>
                <dependencies>
                	<dependency>
                        <groupId>net.sf.proguard</groupId>
                        <artifactId>proguard-base</artifactId>
                        <version>4.11</version>
                    </dependency>
                </dependencies>
			</plugin>			
...maven.pro的内容:

-renamesourcefileattribute SourceFile

-dontskipnonpubliclibraryclassmembers

-keepattributes Exceptions,InnerClasses,Signature,Deprecated,
                SourceFile,LineNumberTable,*Annotation*,EnclosingMethod

-keep public class * {
    public protected *;

-dontskipnonpubliclibraryclassmembers

-keepattributes Exceptions,InnerClasses,Signature,Deprecated,
                SourceFile,LineNumberTable,*Annotation*,EnclosingMethod

-keep public class * {
    public protected *;
}

-keepclassmembernames class * {
    java.lang.Class class$(java.lang.String);
    java.lang.Class class$(java.lang.String, boolean);
}

-keepclasseswithmembernames class * {
    native <methods>;
}

-keepclassmembers,allowoptimization enum * {
    public static **[] values();
    public static ** valueOf(java.lang.String);
}

-keepclassmembers class * implements java.io.Serializable {
    static final long serialVersionUID;
    private static final java.io.ObjectStreamField[] serialPersistentFields;
    private void writeObject(java.io.ObjectOutputStream);
    private void readObject(java.io.ObjectInputStream);
    java.lang.Object writeReplace();
    java.lang.Object readResolve();
}



基于ProGuard-Maven-Plugin的自定义代码混淆插件 大家可能都会碰到一些代码比较敏感的项目场景,这个时候代码被反编译看到就不好了,这个时候就需要代码混淆插件来对代码进行混淆了。 基于Maven的项目一般会去考虑使用proguard-maven-plugin,但是这个插件仅支持打Jar包不支持打War包。 于是我用空闲时间在proguard-maven-plugin的基础上修改了里面的一部分逻辑,可以在项目构建过的时候把代码混淆,支持打成jar包和war包。 现在贴出来给大家看看。 阅读详情

相关推荐

proguard-maven-plugin:支持模块化ProGuard软件包的ProGuard Maven插件

ProGuard Maven插件 在您的构建中运行 。 对于用法,请阅读生成的。 开发发生在。 该插件处于成熟状态,因此预计不会进行重大开发更改。 欢迎提出请求。 这是的的继承者。

Maven - 代码混淆Proguard踩坑记

ProGuard是一个Java代码混淆工具,它可以让你的Java程序变得更小、更快,同时也更安全。因为Java代码很容易被反编译,所以有时候需要对代码进行混淆,以保护你的知识产权。ProGuard主要做了三件事:压缩代码 - 它会删除程序中没有用到的类、属性和方法,让程序变小。优化代码 - 它会优化代码结构,让程序运行更快。混淆代码 - 它会把类名、属性名和方法名改成难懂的名字,让代码变得很难看懂。

小工匠 1万+

Unity UI Toolkit避坑指南:从官方Samples到实际项目,这些‘坑’我帮你踩过了

本文分享了Unity UI Toolkit在实际项目中的避坑经验和优化技巧,包括动画系统的高效替代方案、3D世界UI的创新实现方式、USS样式继承的反直觉规则等。通过详细的代码示例和性能优化策略,帮助开发者避免常见陷阱,提升开发效率。

weixin_29535577的博客 343

Spring Boot 代码混淆(proguard-maven-plugin的使用说明)

就是将代码的通过工具使其可读性变差(越差越好😄)

m0_57042151的博客 9130

Synology-群晖(三)DSM7.0系统Video Station无法播放DTS eac3解决方案

群晖升级DSM7.0后,发现部分DTS eac3解码的视频无法通过Vedio Station 3.0.1-2067进行播放,提示不支持该格式视频,初步判断是无法加载ffmpeg解码导致,网上搜了很多处理办法都没有办法解决,最终在知乎上看到一片文章,按此办法解决了这个问题,目前经过验证,该方案完美支持最新版本Video Station 3.0.1-2067,验证系统为DSM7.0和DSM7.0.1,这里使用的NAS为 Vmware虚拟机 黑群晖 演示。大概步骤如下: 添加这个社群来源 http://p

weixin_45827203的博客 3万+

OpenGL纹理贴图

OpenGL纹理1. 基本概念2. 纹理环绕方式3. 纹理过滤3.1 GL_NEAREST3.2 GL_LINEAR3.3 多级渐远纹理 (Mipmap)4. 纹理加载与创建4.1 纹理加载4.2 纹理创建4.3 纹理的使用 1. 基本概念 纹理是一个2D图片(甚至也有1D和3D的纹理),它可以用来表示物体的细节特征,希望绘制一个有足够多细节的物体,当然可以用足够多的顶点颜色来描述,但是无疑也增加了许多额外的开销;另一种办法就是使用纹理。 学习之前先展示一张实现的纹理图以更好理解纹理! 还是这张图为了将纹

牵LV小猪精的博客 8925

【免费下载】 ProGuard 【maven下载安装与配置】插件

**ProGuard Maven插件** 是一个强大的工具,它允许开发者在Maven构建过程中集成ProGuard,进行代码混淆、优化和缩小。这个插件特别适合那些希望在Java项目中实现最小化和保护代码知识产权的开发团队。项目基于Java编写,并且兼容了Shell脚本和少量Groovy脚本用于特定任务。 ## 关键技术和框架 - **ProGuard**: 一个著名的Java字节码优化与混淆工...

gitblog_09189的博客 1578

SAP ERP与金蝶云星空的集成案例(新能源光伏行业)

通过建设PLM、SAP、MES、WMS、SCADA、EAM等多系统集成的工业互联网平台作为数字化工厂的控制中枢,不仅可以实现人员、设备、物料、工艺参数、产品等生产全流程追溯管理,同时也可以根据数据采集进行生产现场的控制调节,最大程度降低能耗水平。销售订单创建下推金蝶采购订单创建修改、销售订单创建下推金蝶销售订单创建修改、销售发货过账下推金蝶采购入库单、销售发货过账下推金蝶销售出库单:在SAP ERP系统创建销售订单、销售发货过账单后推送到云星空系统,进行采购/销售订单的创建修改、完成物料的入库和出库流程。

集信通 1616

ProGuard Maven插件安装与配置完全指南

ProGuard Maven插件是一个强大的工具,它允许开发者在Maven构建过程中集成ProGuard,进行代码混淆、优化和缩小。这个插件特别适合那些希望在Java项目中实现最小化和保护代码知识产权的开发团队。项目基于Java编写,并且兼容了Shell脚本和少量Groovy脚本用于特定任务。 ## 关键技术和框架 - **ProGuard**: 一个著名的Java字节码优化与混淆工具,能够移

gitblog_00381的博客 879

北斗导航 | 卫星导航接收机原理(基础)

卡尔曼滤波,最小二乘,伪距,芯片,模组,接收机,捕获,跟踪,RTK,RTD,PPP,SPP,多普勒,DOP,灵敏度,热启动,冷启动,PNT,北斗发展,MEO,IGSO,GEO,ICD,导航电文,载波,载噪比

尘世冰封的专栏 2341

华为OD机试 - 取出尽量少的球 - 感谢@吴修柯反馈(Python/JS/C/C++ 双机位A卷 200分)

本专栏收录于《华为OD机试真题(Python/JS/C/C++)》。刷的越多,抽中的概率越大,私信哪吒,备注华为OD,加入华为OD刷题交流群,每一题都有详细的答题思路、详细的代码注释、3个测试用例、为什么这道题采用XX算法、XX算法的适用场景,发现新题目,随时更新。感谢@吴修柯反馈,2025-03-22,A卷200分考试真题。某部门开展 Family Day 开放日活动,其中有个从桶里取球的游戏。有 N 个容量一样的小桶等距排开,且每个小桶都默认装了数量不等的小球,每个小桶装的小球数量记录在数组 bucke

学Java,找哪吒 1485

ProGuard代码混淆插件Maven配置

ProGuard代码混淆插件Maven配置

Jaemon 1356

【PCB专题】Allegro导出3D文件

Allegro中如何导出3D文件,有没有一键导出操作?

一点硬件 4987

如何快速配置ProGuard Maven插件:完整优化指南

ProGuard Maven插件是一个强大的Java字节码优化工具,专门为Maven构建流程设计。通过集成ProGuard技术,它能够显著减小Java应用程序的体积,同时增强代码安全性,是现代Java项目开发的必备利器。 ## 🚀 为什么需要ProGuard Maven插件? 在当今的软件开发环境中,应用程序的性能和安全性至关重要。ProGuard Maven插件通过以下方式为您的项目带来实

gitblog_00824的博客 1046

把慢点掰开看:在 SAP HANA 中启用 SQL 优化耗时跟踪 SqlOptTime 的实战指南

摘要:SAP HANA 性能排查中,常出现SQL查询时快时慢的现象,表面看似执行问题,实则是编译阶段耗时过长。通过SQL优化跟踪工具SqlOptStep和SqlOptTime,可精准区分编译与执行时间。SqlOptStep展示优化树变化过程,而SqlOptTime则记录各阶段耗时,帮助定位问题根源。启用SqlOptTime需配置traceprofile,建议限定特定用户以减少系统负载。实际案例显示,报表响应慢常由计算视图编译(CeQo)导致,而非执行阶段问题。解决方案包括调整计算视图展开方式或优化基础视图结

2007 年 ~ 2025 年,深耕 SAP 技术 18 年 1009

最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版

Part-E1-SDIO-Specification-Ver4.00-Final-120220.pdf:最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版,包括SDIO 接口的外设,SDIO 接口官方协议等。

ProGuard混淆插件 maven配置

2019独角兽企业重金招聘Python工程师标准>>> ...

weixin_33998125的博客 508

jre9下载 jdk9

(Java SE Runtime Environment 9.0) 9.0u175 官方最新版 【x86|x64】

3分钟快速配置ProGuard Maven插件:Java开发者的终极代码保护方案

ProGuard Maven插件是Java开发者实现代码混淆、优化和缩小的强大工具,能够有效保护你的知识产权并提升应用性能。通过简单的Maven配置,即可在构建过程中自动集成ProGuard功能,让你的Java项目获得专业级的代码保护。 ## 为什么选择ProGuard Maven插件? **🔒 代码保护**:通过重命名类、方法和字段,防止逆向工程 **📦 体积优化**:移除未使用的代码和

gitblog_00137的博客 934

LinePhone3.2.7(android端最新版本) sip客户端

SIP客户端For android:LinePhone3.2.7(最新版本),官网地址:http://www.linphone.org/

华为的C语言编程规范.pdf

华为技术有限公司内部技术规范。本规范制定了编写C语言程序的基本原则、规则和建议。从代码的清晰、简洁、可测试、安全、程序效率、可移植各个方面对C语言编程作出了具体指导。

别再手动配置了!用Gradle/Maven插件一键搞定ProGuard混淆(附完整配置代码)

本文介绍了如何使用Gradle和Maven插件实现ProGuard代码混淆的全自动化配置,告别繁琐的手动操作。通过详细的配置示例和最佳实践,帮助开发者提升构建效率,确保代码安全性和体积优化,特别适合Java和Android项目。

weixin_30565199的博客 151

java代码混淆工具ProGuard混淆插件

java代码混淆工具ProGuard混淆插件 介绍 ProGuard是一个纯java编写的混淆工具,有客户端跟jar包两种使用方式。可以将程序打包为jar,然后用工具进行混淆,也可以在maven中导入ProGuard的插件,对代码进行混淆。 大家都知道 java代码可以反编译,因此有时候要保护自己的知识产权还真得费点心思,一般来说有三个思路: 1、将class文件加密,这个是最安全的,但也费事儿,因为要重写classloader来解密class文件; 2、使用花指令,使得class文件不能反编译(利用反编

yinjl123456的博客 2321

5分钟上手proguard-maven-plugin:从配置到打包的快速教程

proguard-maven-plugin是一款支持模块化ProGuard包的Maven插件,能帮助开发者在Maven项目中轻松实现代码混淆与优化。本文将为你提供从配置到打包的完整指南,让你快速掌握这款工具的使用方法。 ## 一、什么是proguard-maven-plugin? proguard-maven-plugin是一个Maven插件,它集成了ProGuard工具,能够对Java项目进

gitblog_00223的博客 812

java的使用proguard maven进行代码混淆

原文链接:http://www.ithao123.cn/content-10417251.html maven的proguard插件配置: com.github.wvengen proguard-maven-plugin 2.0.11

fuck487的博客 8171

ProGuard Maven 插件完整使用指南:快速实现Java代码混淆保护

ProGuard Maven 插件是一个功能强大的Java代码保护工具,能够在Maven构建过程中自动执行ProGuard代码混淆和优化操作。通过集成到Maven生命周期,开发者可以轻松实现对Java应用程序的安全加固,防止源代码被反编译和逆向工程。本指南将详细介绍如何快速配置和使用该插件,帮助您有效保护Java项目知识产权。 ## 快速上手步骤 ### 环境准备与项目获取 首先需要确保您的

gitblog_00428的博客 1074

Maven + Proguard 混洗代码

pom文件增加 src com.pyx4me proguard-maven-plugin package proguard true ${basedir}/proguard.conf ${java

Joker 3782

Java maven 环境下使用proguard-maven-plugin 插件混淆代码

相关链接 http://blog.youkuaiyun.com/zhyhang/article/details/18567409 http://blog.youkuaiyun.com/zhangjianying/article/details/7939593?c=127e3ef14a86fd3afef97eac34257db1 http://my.oschina.net/noahxiao/blog/

云守护的专栏 1万+

ProGuard加密混淆Java代码

ProGuard能够通过压缩、优化、混淆、预检等操作,检测并删除未使用的类,字段,方法和属性,分析和优化字节码,使用简短无意义的名称来重命名类,字段和方法。从而使代码更小、更高效、更难进行逆向工程。

zc_huiyanruju的博客 3134
上一篇: 升级Ubuntu13.10后一些问题的处理
下一篇: JDK8 RC 版发布
powerfulzyh
博客等级 码龄24年 226粉丝 104原创
评论 2
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值