Playframework sbt前卫与第2.2.3场比赛

Playframework sbt前卫与第2.2.3场比赛,playframework,sbt,proguard,playframework-2.2,Playframework,Sbt,Proguard,Playframework 2.2,我们使用Play2.2.3开发了一个web应用程序,希望对其进行混淆。我正在尝试使用插件。我把下面的行放到项目文件夹/PROJECT/plugins.sbt文件中 addSbtPlugin("com.typesafe.sbt" % "sbt-proguard" % "0.2.2") proguardSettings ProguardKeys.options in Proguard ++= Seq("-dontnote", "-dontwarn", "-ignorewarnings") Pr

我们使用Play2.2.3开发了一个web应用程序,希望对其进行混淆。我正在尝试使用插件。我把下面的行放到项目文件夹/PROJECT/plugins.sbt文件中

addSbtPlugin("com.typesafe.sbt" % "sbt-proguard" % "0.2.2")
proguardSettings

ProguardKeys.options in Proguard ++= Seq("-dontnote", "-dontwarn", "-ignorewarnings")

ProguardKeys.options in Proguard += ProguardOptions.keepMain("Application")

inConfig(Proguard)(javaOptions in ProguardKeys.proguard := Seq("-Xmx2g"))
并将下面的行放到项目文件夹/build.sbt文件中

addSbtPlugin("com.typesafe.sbt" % "sbt-proguard" % "0.2.2")
proguardSettings

ProguardKeys.options in Proguard ++= Seq("-dontnote", "-dontwarn", "-ignorewarnings")

ProguardKeys.options in Proguard += ProguardOptions.keepMain("Application")

inConfig(Proguard)(javaOptions in ProguardKeys.proguard := Seq("-Xmx2g"))
当我在play console和插件网站上说callproguard:proguard时,我不确定proguard是否工作。当我在游戏控制台上写入proguard:proguard时,play会给出如下所示的错误

[info] Reading program jar [/Users/kamil/DEVELOPMENT/play-2.2.3/repository/local/net.sf.ehcache/ehcache-core/2.6.6/jars/ehcache-core.jar] (filtered)
[info] Reading program jar [/Users/kamil/DEVELOPMENT/play-2.2.3/repository/cache/org.json/json/jars/json-20140107.jar] (filtered)
[info] Reading library jar [/Library/Java/JavaVirtualMachines/jdk1.7.0_45.jdk/Contents/Home/jre/lib/jce.jar]
[info] Reading library jar [/Library/Java/JavaVirtualMachines/jdk1.7.0_45.jdk/Contents/Home/jre/lib/rt.jar]
[error] Error: The output jar is empty. Did you specify the proper '-keep' options?
[trace] Stack trace suppressed: run last proguard:proguard for the full output.
[error] (proguard:proguard) Proguard failed with exit code [1]
[error] Total time: 35 s, completed 10.Tem.2014 09:45:23

有人成功地将这个插件与play framework结合使用吗?

在花了几天时间试图正确配置sbt proguard之后,我放弃了,只是在构建项目后使用了proguard

我没有将模糊处理作为构建部分,而是打开了由
activator dist
生成的zip文件,对jar进行了模糊处理,并将其返回到具有相同名称的lib文件夹中。以下是如何做到这一点:

Proguard可以自己运行。您只需从下载tar文件并使用配置文件运行jar,如:

java -jar /path/to/proguard/lib/proguard.jar @CONF_FILE
现在,对于配置文件,您需要指定:

  • injar-正在混淆罐子-
    将dist创建的zip文件解压缩到lib文件中后,发现jar名为YOUR_PROJECT.VERSION-sans-externalized.jar这就是您需要混淆的jar
  • outjar—模糊化jar(输出)的路径。在这个过程结束时,只需将这个jar复制回lib目录,并将其重命名为in-jar的名称

  • keep—需要保留其名称的任何包名称、类、方法或字段。您应该在webapp中保留的常见内容:

    3.1。控制器方法名称

    3.2。由play使用并在application.conf中指定的任何类,如ErrorHandler、ApplicationLoader

    3.3。所有路由器生成的类

  • 库-包括lib文件中除您自己的jar之外的所有库

  • 因此,conf.pro文件应该如下所示:

    -injars /path/to/jar/project-version-sans-externalized.jar(!META-INF)
    -outjars /path/to/obfuscated/jar.jar
    
    
    -keepnames class com.example.ErrorHandler
    -keepnames class com.example.ApplicationLoader    
    
    -keepnames class controllers.**
    -keepclassmembernames class controllers.** {
        <methods>;    
    }
    
    -keeppackagenames controllers.**, router.**, views.**
    -keep class router.** {*;}
    -keepnames class router.** {*;}
    -keepclassmembers class router.** {*;}
    -keep class views.** {*;}
    -keepnames class views.** {*;}
    -keepclassmembers class views.** {*;}
    -libraryjars /usr/lib/jvm/latest/jre/lib/rt.jar
    -libraryjars /path/to/lib/library1.jar
    -libraryjars /path/to/lib/library2.jar
    
    -injars/path/to/jar/project版本sans externalized.jar(!META-INF)
    -outjars/path/to/obfuscated/jar.jar
    -keepnames类com.example.ErrorHandler
    -keepnames类com.example.ApplicationLoader
    -keepnames类控制器**
    -keepclassmembernames类控制器。**{
    ;    
    }
    -keeppackagenames控制器。**,路由器。**,视图**
    -保留类路由器。**{*;}
    -keepnames类路由器。**{*;}
    -keepclassmembers类路由器。**{*;}
    -保留类视图。**{*;}
    -保留名称类视图。**{*;}
    -keepclassmembers类视图。**{*;}
    -libraryjars/usr/lib/jvm/latest/jre/lib/rt.jar
    -libraryjars/path/to/lib/library1.jar
    -libraryjars/path/to/lib/library2.jar
    
    在完成模糊处理并将输出jar复制回其旧目录和名称后,您可以压缩回您的项目,您就得到了一个模糊处理的play项目

    编辑:


    我真的建议你看看这个。它有许多不同项目设置和框架的示例。

    ok@Tom但是我应该把conf.pro文件放在哪里?它的路径是什么?@Fobi这不重要@汤姆,看看这个