Bla*_*man 7 java obfuscation spring proguard maven
我正在使用带有spring mvc应用程序和maven的proguard.
我的pom.xml的构建部分如下所示:
<build>
<finalName>myapp</finalName>
<plugins>
<plugin>
<groupId>com.pyx4me</groupId>
<artifactId>proguard-maven-plugin</artifactId>
<executions>
<execution>
<phase>package</phase>
<goals>
<goal>proguard</goal>
</goals>
</execution>
</executions>
<configuration>
<obfuscate>true</obfuscate>
<!--<options>-->
<!--<option>-keep public class</option>-->
<!--</options>-->
<injar>${project.build.finalName}</injar>
<injar>${project.build.finalName}</injar>
<inFilter>com.myapp.*</inFilter>
</configuration>
</plugin>
</plugins>
Run Code Online (Sandbox Code Playgroud)
我也尝试过:
<injar>${project.build.finalName}.war</injar>
Run Code Online (Sandbox Code Playgroud)
当我跑:
mvn clean install
Run Code Online (Sandbox Code Playgroud)
构建失败消息:
[proguard] Reading program war [/Users/me/dev/git/myproject/myapp/target/myapp.war] (filtered)
[proguard] Error: The input doesn't contain any classes. Did you specify the proper '-injars' options?
ERROR] Failed to execute goal com.pyx4me:proguard-maven-plugin:2.0.4:proguard (default) on project myapp: Obfuscation failed (result=1) -> [Help 1]
Run Code Online (Sandbox Code Playgroud)
它似乎已经正确地拾取了我的jar作为显示之前的消息:
[INFO] --- proguard-maven-plugin:2.0.4:proguard (default) @ myapp ---
[INFO] execute ProGuard [-injars, '/Users/me/dev/gitserver/myproject/myapp/target/myapp.war'(!META-INF/maven/**,com.myapp.*), -outjars, '/Users/me/dev/git/myproject/myapp/target/myapp_pg.war', -libraryjars, ....
Run Code Online (Sandbox Code Playgroud)
另外,您建议我使用哪些选项? 这是一个春天的mvc所以我有这样的注释:
因此,任何这些类/字段都不应该重命名我想象.
(我的目标只是让那些反编译的人头疼,这样他们就不能反编译和使用代码.混淆会让他们使用它,但他们无法维护代码库,除非他们重新写它.我没有任何花哨的算法,所以在这方面我没有什么可隐瞒的.)
更新
让我在这里说清楚,我的spring mvc使用maven出于某种原因(我是maven的新手),当做一个mvn clean install时会生成一个myapp.war文件和一个爆炸的war myapp /(这就是我要部署的内容)生产,而不是myapp.war文件)
我的myapp文件夹有:
/target/myapp/
/target/myapp/meta-inf (empty folder)
/target/myapp/web-inf
/target/myapp/web-inf/classes (com.myapp. ...)
/target/myapp/web-inf/lib/
/target/myapp/web-inf/ web.xml, application.xml (for spring)
/target/myapp/web-inf/views/
Run Code Online (Sandbox Code Playgroud)
那么proguard应该在/ target/myapp/web-inf/classes文件夹中混淆吗?我怎么告诉它这样做?
更新2
我现在得到这个:
好的,我没有得到:未能执行目标... proguard ..无法重命名/ Users/me/dev/git/project1/myapp/target/myapp/web-inf/classes(请参阅我的更新部分了解更多内容我改变了我的pom.xml)
我改变了我的pom.xml:
<configuration>
<obfuscate>true</obfuscate>
<injar>${project.build.finalName}/WEB-INF/classes/</injar>
<inFilter>com/myapp/**</inFilter>
</configuration>
Run Code Online (Sandbox Code Playgroud)
ProGuard过滤器处理文件名,因此
.....(!META-INF/maven/**,com.myapp.*)
Run Code Online (Sandbox Code Playgroud)
可能不会匹配任何类文件.你可能想要
.....(!META-INF/maven/**,com/myapp/**)
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
7668 次 |
最近记录: |