Я использую Proguard, чтобы запутать мой java код. Плагин Maven для этого выглядит так:
<plugin>
<groupId>com.github.wvengen</groupId>
<artifactId>proguard-maven-plugin</artifactId>
<version>2.2.0</version>
<executions>
<execution>
<phase>package</phase>
<goals>
<goal>proguard</goal>
</goals>
</execution>
</executions>
<configuration>
<archive>
<manifest>
<mainClass>DataQualityApplication</mainClass>
<packageName>com.ge.ssi</packageName>
</manifest>
</archive>
<proguardInclude>${project.build.directory}/proguard.conf</proguardInclude>
<injar>${project.build.finalName}.jar</injar>
<outjar>${project.build.finalName}-min.jar</outjar>
<libs>
<lib>${java.home}/lib/rt.jar</lib>
<lib>${java.home}/lib/jce.jar</lib>
<lib>${java.home}/lib/jsse.jar</lib>
</libs>
</configuration>
</plugin>
В моей Proguard. Файл conf, я также сохраняю эти свойства:
-optimizations !class/marking/final
-dontwarn
-ignorewarnings
-adaptresourcefilenames **.properties
-adaptresourcefilecontents **.properties,META-INF/MANIFEST.MF
-dontshrink
-dontoptimize
-dontusemixedcaseclassnames
-dontpreverify
-verbose
-keep public class com.ge.ssi.DataQualityApplication {
public static void main(java.lang.String[]);
}
Но когда я пытаюсь запустить запутанный jar, я получаю сообщение об ошибке:
нет атрибута основного манифеста, в SSI-DataQuality-Engine-0.0.1-SNAPSHOT-V4.4-min.jar
Файл манифеста присутствует, но у него нет атрибута основного класса, но мой атрибут основного класса присутствует в оригинальный jar манифест.
Я пробовал различные методы, я также явно упомянул основной класс в файле pom, как вы можете видеть в приведенном выше фрагменте кода, все та же проблема.