gpt4 book ai didi

spring-boot - 如何使用spring-boot gradle插件进行维护

转载 作者:行者123 更新时间:2023-12-04 14:08:37 26 4
gpt4 key购买 nike

如何使用Spring Boot 2和Gradle构建来设置Proguard模糊处理?

你好。尝试使用其gradle插件和Proguard gradle插件设置Spring Boot应用程序的代码混淆。 Google大多提供了一些针对较早的spring-boot-gradle-plugin版本(即使用不存在的bootRepackage任务的this closest one)或使用maven插件(具有重新打包目标)的方法。

据我了解,我的想法是在jar打包之前混淆类,但是在当前gradle插件版本中看不到任何入口点,并且希望避免手动提取和回退。

有人在使用那个组合吗? Spring Boot版本> = 2.0.3。

最佳答案

我认为今天是不可能的,您必须手动提取并压缩回去。

手动提取和压缩后的示例可能会有所帮助:

build.gradle

version = '0.1.0'

buildscript {
dependencies {
classpath 'net.sf.proguard:proguard-gradle:6.0.3'
classpath 'net.sf.proguard:proguard-base:6.0.3'
}
}

apply plugin: 'java'
apply plugin: 'org.springframework.boot'
apply plugin: 'io.spring.dependency-management'

task extractJar(type: Copy) {
def zipFile = file("${buildDir}/libs/your_project_name-${version}.jar")
def outputDir = file("${buildDir}/unpacked/")

from zipTree(zipFile)
into outputDir
}

task proguard(type: proguard.gradle.ProGuardTask) {
doFirst {
tasks.extractJar.execute();
}
configuration 'proguard.conf'
injars "${buildDir}/unpacked/BOOT-INF/classes"
outjars "${buildDir}/obfClasses"

libraryjars "${System.getProperty('java.home')}/lib/rt.jar"
libraryjars "${buildDir}/unpacked/BOOT-INF/lib"

doLast {
tasks.deleteClasses.execute();
}
}

task deleteClasses(type: Delete) {
delete "${buildDir}/unpacked/BOOT-INF/classes/"

doLast {
tasks.copyObfuscatedClasses.execute()
}
}

task copyObfuscatedClasses(type: Copy) {
from "${buildDir}/obfClasses"
into "${buildDir}/unpacked/BOOT-INF/classes/"
include 'com/**'
include '*.properties'

doLast {
tasks.copyObfuscatedJars.execute()
}
}

task copyObfuscatedJars(type: Copy) {
from "${buildDir}/obfClasses"
into "${buildDir}/unpacked/BOOT-INF/lib/"
include '*.jar'

doLast {
tasks.deleteObfuscated.execute()
}
}

task deleteObfuscated(type: Delete) {
delete 'build/obfClasses'

doLast {
tasks.repackage.execute()
}
}

task repackage(type: Zip) {
from "${buildDir}/unpacked"
entryCompression ZipEntryCompression.STORED
archiveName "your_project_name-${version}-obf.jar"
destinationDir(file("${buildDir}/libs"))
}

proguard.conf
-ignorewarnings
-keepdirectories

-keep interface com.your_package.** { *; }
-keep class com.your_package.main{ *; }
-keep class com.your_package.model.** { *; }

-keepparameternames
-keepclassmembers @org.springframework.** class * {
*;
}

-keepclassmembers @org.springframework.** interface * {
*;
}

-keepclassmembers enum * {
public static **[] values();
public static ** valueOf(java.lang.String);
}

-keep @org.springframework.** class *
-keepclassmembers @javax.** class * { *; }

-dontwarn org.springframework.**
-dontwarn javax.**
-dontwarn org.yaml.snakeyaml.**
-dontwarn okhttp3.**

关于spring-boot - 如何使用spring-boot gradle插件进行维护,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52875698/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com