My project is based on activeweb + activejdbc, and put db migrator in the app, and I want to obfuscate only one class(named app.util.SecretClass
) by proguard. The pom.xml
lists below:
<plugin>
<groupId>com.github.wvengen</groupId>
<artifactId>proguard-maven-plugin</artifactId>
<executions>
<execution>
<phase>package</phase>
<goals><goal>proguard</goal></goals>
</execution>
</executions>
<configuration>
<proguardVersion>6.1.1</proguardVersion>
<!--
<injar>${project.build.finalName}.jar</injar>
-->
<injar>classes</injar>
<outjar>${project.build.finalName}.jar</outjar>
<obfuscate>true</obfuscate>
<options>
<option>-ignorewarnings</option>
<option>-dontshrink</option>
<option>-dontoptimize</option>
<option>-keep class !app.util.SecretClass { *; }</option>
<option>-keep class javax.crypto.**</option>
<option>-keep class org.javalite.db_migrator.DbUtils { *; }</option>
<option>-dontwarn javax.crypto.**</option>
<option>-dontwarn org.javalite.db_migrator.DbUtils </option>
</options>
<libs>
<!-- Include main JAVA library required.-->
<lib>${java.home}/lib/rt.jar</lib>
</libs>
</configuration>
<dependencies>
<dependency>
<groupId>net.sf.proguard</groupId>
<artifactId>proguard-base</artifactId>
<version>6.1.1</version>
</dependency>
</dependencies>
</plugin>
When run mvn package
, it prints warnings
[proguard] Note: org.javalite.db_migrator.DbUtils accesses a method 'close()' dynamically
[proguard] Maybe this is library method 'com.fasterxml.jackson.core.JsonParser { void close(); }'
[proguard] Maybe this is library method 'com.fasterxml.jackson.core.base.GeneratorBase { void close(); }'
[proguard] Maybe this is library method 'com.fasterxml.jackson.core.base.ParserBase { void close(); }'
[proguard] Maybe this is library method 'com.fasterxml.jackson.core.base.ParserMinimalBase { void close(); }'
[proguard] Maybe this is library method 'com.fasterxml.jackson.core.io.MergedStream { void close(); }'
[proguard] Maybe this is library method 'com.fasterxml.jackson.core.io.SegmentedStringWriter { void close(); }'
[proguard] Maybe this is library method 'com.fasterxml.jackson.core.io.UTF32Reader { void close(); }'
[proguard] Maybe this is library method 'com.fasterxml.jackson.core.io.UTF8Writer { void close(); }'
[proguard] Maybe this is library method 'com.fasterxml.jackson.core.json.UTF8JsonGenerator { void close(); }'
...
[proguard] Note: there were 1 accesses to class members by means of reflection.
[proguard] You should consider explicitly keeping the mentioned class members
[proguard] (using '-keep' or '-keepclassmembers').
[proguard] (http://proguard.sourceforge.net/manual/troubleshooting.html#dynamicalclassmember)
[proguard] Note: you're ignoring all warnings!
I am very confused that
app.util.SecretClass
has no reference to any class inorg.javalite
- I do keep
org.javalite
not obfuscating in theoptions
section.
What obfuscate rule should I write to avoid such warning? Thanks!