2016-11-18 7 views
2

私はもう1つのプロジェクトの一部です。私はプロジェクトのjarを作るためにプロセスを構築するmavenを使用しています。私はそれを難読化するためにProGuardを使用しました。私は、UI要求を処理するいくつかのコントローラを持っています。ProGuard:難読化されたjarは機能しませんが、難読化されていないjarは動作しています

質問私の問題は、難読化されていないjarが動作していることです。すべてのコントローラがヒットしていますが、難読化されたjarが動作していません(コントローラがヒットしません)。難読化の問題は何ですか?

マイServlet.XML:

<context:component-scan base-package="myPackage.controllers" /> 
<mvc:annotation-driven /> 

サンプルコントローラコード:ProGuardのに関連

​​

私のpom.xml内容:

<plugin> 
    <groupId>com.github.wvengen</groupId> 
    <artifactId>proguard-maven-plugin</artifactId> 
    <version>2.0.13</version> 
    <dependencies> 
     <dependency> 
      <groupId>net.sf.proguard</groupId> 
      <artifactId>proguard-base</artifactId> 
      <version>5.2.1</version> 
      <scope>runtime</scope> 
     </dependency> 
    </dependencies> 
    <executions> 
     <execution> 
      <phase>package</phase> 
      <goals> 
       <goal>proguard</goal> 
      </goals> 
     </execution> 
    </executions> 
    <configuration> 
     <maxMemory>576m</maxMemory> 
     <obfuscate>true</obfuscate> 
     <!-- File with proguard configuration --> 
     <proguardInclude>${basedir}/proguard.conf</proguardInclude> 
     <libs> 
      <lib>${java7home}/jre/lib/rt.jar</lib> 
      <lib>${java7home}/jre/lib/jce.jar</lib> 
     </libs> 
    </configuration> 
</plugin> 

マイProGuard.confファイルの内容:

-dontnot 
-dontwarn 
-dontshrink 
-dontoptimize 
-keep public class * { public protected *;} 
-keep class myPackage.controllers.** { public protected *;} 
-keepattributes SourceFile,Signature,LineNumberTable,Exceptions, *Annotation* 
-keepparameternames 
-printmapping '${logFilesPath}/${project.artifactId}.log' 

難読化されたjarファイルを確認したところ、すべての注釈が保持されます。 私の情報パッケージには、パッケージレベルのアクセス権しか持たない他のクラスもあります。だからそれらも難読化されている。しかし、RequestMappingsを持つすべてのクラスは公開されており、難読化されていません。

マイ実行環境:

1)は、Java 1.7の私のプロジェクトのために。 5.2.1

3)春:4.0.9

4)ジャクソン:1.9.11

しかし、このjarファイルは、Java 1.8

2上で実行されているプロジェクト)ProGuardのバージョンに置かれつつあります

:未ofuscated jarファイルが動作しますが、難読化されたが、上記の環境で動作していない)

+0

難読化されたjarが起動するときにエラーが発生しますか?タイムアウトが発生していますか? – Zymus

+0

番号。それは読書と読書と出力ジャーを準備するだけです。何か私が逃した?また、.m2フォルダからいくつかのjarファイルが必要です。 – SuhasD

答えて

3

私はProGuard.confファイル

に以下を追加する必要があります
-keepdirectories 

ディレクトリエントリは、難読化プロセスではデフォルトで削除されます。これは、ジャーのサイズを小さくするために行われます。 Springの「コンポーネントスキャン」機能(ディレクトリ構造が必要な場合があります)を使用するとき、正しく動作するようにする必要があります。

+0

私はちょうど 'ClassPathBeanDefinitionScanner'を深く掘り下げ、あなたのヒントが私に多くの時間を節約したと思っています。ありがとうございます - それは今動作します。 –

関連する問題