-
-
Notifications
You must be signed in to change notification settings - Fork 271
Download cache localization impr #258
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Changes from all commits
346513c
a69978d
22e9772
51ca901
d5f7960
b9b5335
fd02ce9
File filter
Filter by extension
Conversations
Jump to
Diff view
Diff view
There are no files selected for viewing
| Original file line number | Diff line number | Diff line change | ||||||||||||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| @@ -1,124 +1,198 @@ | ||||||||||||||||||||||||
| # === CRITICAL: Keep Everything for Networking === | ||||||||||||||||||||||||
| -keeppackagenames io.ktor.** | ||||||||||||||||||||||||
| -keeppackagenames okhttp3.** | ||||||||||||||||||||||||
| -keeppackagenames okio.** | ||||||||||||||||||||||||
|
|
||||||||||||||||||||||||
| # Kotlin | ||||||||||||||||||||||||
| -keep class kotlin.** { *; } | ||||||||||||||||||||||||
| -keep class kotlinx.** { *; } | ||||||||||||||||||||||||
| -keepclassmembers class kotlin.** { *; } | ||||||||||||||||||||||||
|
|
||||||||||||||||||||||||
| # Coroutines | ||||||||||||||||||||||||
| -keep class kotlinx.coroutines.** { *; } | ||||||||||||||||||||||||
| # ============================================================================ | ||||||||||||||||||||||||
| # ProGuard / R8 Rules for GitHub Store (KMP + Compose Multiplatform) | ||||||||||||||||||||||||
| # ============================================================================ | ||||||||||||||||||||||||
| # Used with: proguard-android-optimize.txt (enables optimization passes) | ||||||||||||||||||||||||
| # ============================================================================ | ||||||||||||||||||||||||
|
|
||||||||||||||||||||||||
| # ── General Attributes ────────────────────────────────────────────────────── | ||||||||||||||||||||||||
| -keepattributes Signature | ||||||||||||||||||||||||
| -keepattributes *Annotation* | ||||||||||||||||||||||||
| -keepattributes InnerClasses,EnclosingMethod | ||||||||||||||||||||||||
| -keepattributes SourceFile,LineNumberTable | ||||||||||||||||||||||||
| -keepattributes Exceptions | ||||||||||||||||||||||||
|
|
||||||||||||||||||||||||
| # ── Kotlin Core ───────────────────────────────────────────────────────────── | ||||||||||||||||||||||||
| # Keep Kotlin metadata for reflection used by serialization & Koin | ||||||||||||||||||||||||
| -keep class kotlin.Metadata { *; } | ||||||||||||||||||||||||
| -keep class kotlin.reflect.jvm.internal.** { *; } | ||||||||||||||||||||||||
| -dontwarn kotlin.** | ||||||||||||||||||||||||
| -dontwarn kotlinx.** | ||||||||||||||||||||||||
|
|
||||||||||||||||||||||||
| # ── Kotlin Coroutines ────────────────────────────────────────────────────── | ||||||||||||||||||||||||
| -keepnames class kotlinx.coroutines.internal.MainDispatcherFactory {} | ||||||||||||||||||||||||
| -keepnames class kotlinx.coroutines.CoroutineExceptionHandler {} | ||||||||||||||||||||||||
| -keepclassmembernames class kotlinx.** { volatile <fields>; } | ||||||||||||||||||||||||
| -dontwarn kotlinx.coroutines.** | ||||||||||||||||||||||||
|
|
||||||||||||||||||||||||
| # === Ktor - Keep EVERYTHING === | ||||||||||||||||||||||||
| -keep class io.ktor.** { *; } | ||||||||||||||||||||||||
| -keep interface io.ktor.** { *; } | ||||||||||||||||||||||||
| -keepclassmembers class io.ktor.** { *; } | ||||||||||||||||||||||||
| # ── Kotlinx Serialization ────────────────────────────────────────────────── | ||||||||||||||||||||||||
| # Serialization engine internals | ||||||||||||||||||||||||
| -keep class kotlinx.serialization.** { *; } | ||||||||||||||||||||||||
| -keepclassmembers class kotlinx.serialization.json.** { *** Companion; } | ||||||||||||||||||||||||
| -dontnote kotlinx.serialization.** | ||||||||||||||||||||||||
|
|
||||||||||||||||||||||||
| # Generated serializers for ALL @Serializable classes | ||||||||||||||||||||||||
| -keep class **$$serializer { *; } | ||||||||||||||||||||||||
| -keepclassmembers @kotlinx.serialization.Serializable class ** { | ||||||||||||||||||||||||
| *** Companion; | ||||||||||||||||||||||||
| *** INSTANCE; | ||||||||||||||||||||||||
| kotlinx.serialization.KSerializer serializer(...); | ||||||||||||||||||||||||
| } | ||||||||||||||||||||||||
|
|
||||||||||||||||||||||||
| # App @Serializable classes (DTOs, models, navigation routes) across all packages | ||||||||||||||||||||||||
| -keep @kotlinx.serialization.Serializable class zed.rainxch.** { *; } | ||||||||||||||||||||||||
| -keep,includedescriptorclasses class zed.rainxch.**$$serializer { *; } | ||||||||||||||||||||||||
| -keepclassmembers @kotlinx.serialization.Serializable class zed.rainxch.** { | ||||||||||||||||||||||||
| *** Companion; | ||||||||||||||||||||||||
| } | ||||||||||||||||||||||||
|
|
||||||||||||||||||||||||
| # ── Navigation Routes ────────────────────────────────────────────────────── | ||||||||||||||||||||||||
| # Type-safe navigation requires these classes to survive R8 | ||||||||||||||||||||||||
| -keep class zed.rainxch.githubstore.app.navigation.GithubStoreGraph { *; } | ||||||||||||||||||||||||
| -keep class zed.rainxch.githubstore.app.navigation.GithubStoreGraph$* { *; } | ||||||||||||||||||||||||
|
|
||||||||||||||||||||||||
| # ── Network DTOs – Core Module ───────────────────────────────────────────── | ||||||||||||||||||||||||
| -keep class zed.rainxch.core.data.dto.** { *; } | ||||||||||||||||||||||||
|
|
||||||||||||||||||||||||
| # ── Network DTOs – Feature Modules ───────────────────────────────────────── | ||||||||||||||||||||||||
| -keep class zed.rainxch.search.data.dto.** { *; } | ||||||||||||||||||||||||
| -keep class zed.rainxch.devprofile.data.dto.** { *; } | ||||||||||||||||||||||||
| -keep class zed.rainxch.home.data.dto.** { *; } | ||||||||||||||||||||||||
|
|
||||||||||||||||||||||||
| # ── Domain Models ────────────────────────────────────────────────────────── | ||||||||||||||||||||||||
| -keep class zed.rainxch.core.domain.model.GithubRepoSummary { *; } | ||||||||||||||||||||||||
| -keep class zed.rainxch.core.domain.model.GithubUser { *; } | ||||||||||||||||||||||||
|
|
||||||||||||||||||||||||
| # Keep enums used by Room TypeConverters and serialization | ||||||||||||||||||||||||
| -keep class zed.rainxch.core.domain.model.InstallSource { *; } | ||||||||||||||||||||||||
| -keep class zed.rainxch.core.domain.model.AppTheme { *; } | ||||||||||||||||||||||||
| -keep class zed.rainxch.core.domain.model.FontTheme { *; } | ||||||||||||||||||||||||
| -keep class zed.rainxch.core.domain.model.Platform { *; } | ||||||||||||||||||||||||
| -keep class zed.rainxch.core.domain.model.SystemArchitecture { *; } | ||||||||||||||||||||||||
| -keep class zed.rainxch.core.domain.model.PackageChangeType { *; } | ||||||||||||||||||||||||
|
|
||||||||||||||||||||||||
| # ── Room Database ────────────────────────────────────────────────────────── | ||||||||||||||||||||||||
| # Database class and generated implementation | ||||||||||||||||||||||||
| -keep class zed.rainxch.core.data.local.db.AppDatabase { *; } | ||||||||||||||||||||||||
| -keep class zed.rainxch.core.data.local.db.AppDatabase_Impl { *; } | ||||||||||||||||||||||||
|
|
||||||||||||||||||||||||
| # Entities | ||||||||||||||||||||||||
| -keep class zed.rainxch.core.data.local.db.entities.** { *; } | ||||||||||||||||||||||||
|
|
||||||||||||||||||||||||
| # DAOs | ||||||||||||||||||||||||
| -keep interface zed.rainxch.core.data.local.db.dao.** { *; } | ||||||||||||||||||||||||
| -keep class zed.rainxch.core.data.local.db.dao.** { *; } | ||||||||||||||||||||||||
|
|
||||||||||||||||||||||||
| # Room runtime | ||||||||||||||||||||||||
| -keep class androidx.room.** { *; } | ||||||||||||||||||||||||
| -dontwarn androidx.room.** | ||||||||||||||||||||||||
|
|
||||||||||||||||||||||||
| # ── Ktor ─────────────────────────────────────────────────────────────────── | ||||||||||||||||||||||||
| # Engine discovery, plugin system, and content negotiation use reflection | ||||||||||||||||||||||||
| -keep class io.ktor.client.engine.** { *; } | ||||||||||||||||||||||||
| -keep class io.ktor.client.plugins.** { *; } | ||||||||||||||||||||||||
| -keep class io.ktor.serialization.** { *; } | ||||||||||||||||||||||||
| -keep class io.ktor.utils.io.** { *; } | ||||||||||||||||||||||||
| -keep class io.ktor.http.** { *; } | ||||||||||||||||||||||||
| -keepnames class io.ktor.** { *; } | ||||||||||||||||||||||||
| -dontwarn io.ktor.** | ||||||||||||||||||||||||
|
|
||||||||||||||||||||||||
| # Ktor Debug | ||||||||||||||||||||||||
| -dontwarn java.lang.management.** | ||||||||||||||||||||||||
|
|
||||||||||||||||||||||||
| # === OkHttp - Keep EVERYTHING === | ||||||||||||||||||||||||
| -keep class okhttp3.** { *; } | ||||||||||||||||||||||||
| -keep interface okhttp3.** { *; } | ||||||||||||||||||||||||
| -keepclassmembers class okhttp3.** { *; } | ||||||||||||||||||||||||
| -keepnames class okhttp3.** { *; } | ||||||||||||||||||||||||
| # ── OkHttp (Ktor engine) ────────────────────────────────────────────────── | ||||||||||||||||||||||||
| -keep class okhttp3.internal.platform.** { *; } | ||||||||||||||||||||||||
| -keepnames class okhttp3.internal.publicsuffix.PublicSuffixDatabase | ||||||||||||||||||||||||
| -dontwarn okhttp3.** | ||||||||||||||||||||||||
| -dontwarn org.bouncycastle.** | ||||||||||||||||||||||||
| -dontwarn org.openjsse.** | ||||||||||||||||||||||||
|
|
||||||||||||||||||||||||
| # === Okio - Keep EVERYTHING === | ||||||||||||||||||||||||
| -keep class okio.** { *; } | ||||||||||||||||||||||||
| -keepclassmembers class okio.** { *; } | ||||||||||||||||||||||||
| -keepnames class okio.** { *; } | ||||||||||||||||||||||||
| # ── Okio ─────────────────────────────────────────────────────────────────── | ||||||||||||||||||||||||
| -dontwarn okio.** | ||||||||||||||||||||||||
|
|
||||||||||||||||||||||||
| # === Network Stack - Keep EVERYTHING === | ||||||||||||||||||||||||
| -keep class java.net.** { *; } | ||||||||||||||||||||||||
| -keep class javax.net.** { *; } | ||||||||||||||||||||||||
| -keep class sun.security.ssl.** { *; } | ||||||||||||||||||||||||
| -keepclassmembers class java.net.** { *; } | ||||||||||||||||||||||||
| -keepclassmembers class javax.net.** { *; } | ||||||||||||||||||||||||
|
|
||||||||||||||||||||||||
| # DNS Resolution | ||||||||||||||||||||||||
| -keep class java.net.InetAddress { *; } | ||||||||||||||||||||||||
| -keep class java.net.Inet4Address { *; } | ||||||||||||||||||||||||
| -keep class java.net.Inet6Address { *; } | ||||||||||||||||||||||||
| -keep class java.net.InetSocketAddress { *; } | ||||||||||||||||||||||||
|
|
||||||||||||||||||||||||
| # SSL/TLS | ||||||||||||||||||||||||
| -keep class javax.net.ssl.** { *; } | ||||||||||||||||||||||||
| # ── SSL/TLS ──────────────────────────────────────────────────────────────── | ||||||||||||||||||||||||
| -keep class org.conscrypt.** { *; } | ||||||||||||||||||||||||
| -dontwarn org.conscrypt.** | ||||||||||||||||||||||||
|
|
||||||||||||||||||||||||
| # === Kotlinx Serialization === | ||||||||||||||||||||||||
| -keepattributes *Annotation*, InnerClasses | ||||||||||||||||||||||||
| -dontnote kotlinx.serialization.** | ||||||||||||||||||||||||
| -keep,includedescriptorclasses class zed.rainxch.githubstore.**$$serializer { *; } | ||||||||||||||||||||||||
| -keep @kotlinx.serialization.Serializable class zed.rainxch.githubstore.** { *; } | ||||||||||||||||||||||||
| -keepclassmembers @kotlinx.serialization.Serializable class zed.rainxch.githubstore.** { | ||||||||||||||||||||||||
| *** Companion; | ||||||||||||||||||||||||
| } | ||||||||||||||||||||||||
|
|
||||||||||||||||||||||||
| # Keep your models | ||||||||||||||||||||||||
| -keep class zed.rainxch.githubstore.core.domain.model.** { *; } | ||||||||||||||||||||||||
| # ── Koin DI ──────────────────────────────────────────────────────────────── | ||||||||||||||||||||||||
| # Koin uses reflection for constructor injection | ||||||||||||||||||||||||
| -keep class org.koin.** { *; } | ||||||||||||||||||||||||
| -keep interface org.koin.** { *; } | ||||||||||||||||||||||||
| -dontwarn org.koin.** | ||||||||||||||||||||||||
|
|
||||||||||||||||||||||||
| # Keep ViewModels so Koin can instantiate them | ||||||||||||||||||||||||
| -keep class zed.rainxch.**.presentation.**ViewModel { *; } | ||||||||||||||||||||||||
| -keep class zed.rainxch.**.presentation.**ViewModel$* { *; } | ||||||||||||||||||||||||
|
|
||||||||||||||||||||||||
| # ── Compose / AndroidX ──────────────────────────────────────────────────── | ||||||||||||||||||||||||
| # Compose runtime and navigation (most rules come bundled with the library) | ||||||||||||||||||||||||
| -dontwarn androidx.compose.** | ||||||||||||||||||||||||
| -dontwarn androidx.lifecycle.** | ||||||||||||||||||||||||
|
Comment on lines
124
to
127
Contributor
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Over-broad keeps for Compose/AndroidX will significantly bloat the APK.
Since the PR is enabling R8 minification, these blanket keeps directly undermine the size savings. In projects I've seen, removing the Compose blanket keep alone can save 2–5 MB from the release APK. Recommendation: Remove these three blanket keeps and rely on the libraries' bundled consumer rules. If you hit a specific runtime issue (e.g., a crash from a stripped class), add a targeted keep for just that class. ♻️ Proposed change # ── Compose / AndroidX ────────────────────────────────────────────────────
# Compose runtime and navigation (most rules come bundled with the library)
--keep class androidx.compose.** { *; }
-dontwarn androidx.compose.**
--keep class androidx.navigation.** { *; }
--keep class androidx.lifecycle.** { *; }
-dontwarn androidx.lifecycle.**If specific classes cause runtime issues after removal, add targeted rules like: 📝 Committable suggestion
Suggested change
🤖 Prompt for AI Agents |
||||||||||||||||||||||||
|
|
||||||||||||||||||||||||
| # ── DataStore ────────────────────────────────────────────────────────────── | ||||||||||||||||||||||||
| -keep class androidx.datastore.** { *; } | ||||||||||||||||||||||||
| -keepclassmembers class androidx.datastore.preferences.** { *; } | ||||||||||||||||||||||||
| -dontwarn androidx.datastore.** | ||||||||||||||||||||||||
|
|
||||||||||||||||||||||||
| # ── Landscapist / Coil3 (Image Loading) ──────────────────────────────────── | ||||||||||||||||||||||||
| -keep class com.skydoves.landscapist.** { *; } | ||||||||||||||||||||||||
| -keep interface com.skydoves.landscapist.** { *; } | ||||||||||||||||||||||||
| -keep class coil3.** { *; } | ||||||||||||||||||||||||
| -dontwarn coil3.** | ||||||||||||||||||||||||
| -dontwarn com.skydoves.landscapist.** | ||||||||||||||||||||||||
|
|
||||||||||||||||||||||||
| # ── Multiplatform Markdown Renderer ──────────────────────────────────────── | ||||||||||||||||||||||||
| -keep class com.mikepenz.markdown.** { *; } | ||||||||||||||||||||||||
| -keep class org.intellij.markdown.** { *; } | ||||||||||||||||||||||||
| -dontwarn com.mikepenz.markdown.** | ||||||||||||||||||||||||
| -dontwarn org.intellij.markdown.** | ||||||||||||||||||||||||
|
|
||||||||||||||||||||||||
| # ── Kermit Logging ───────────────────────────────────────────────────────── | ||||||||||||||||||||||||
| -keep class co.touchlab.kermit.** { *; } | ||||||||||||||||||||||||
| -dontwarn co.touchlab.kermit.** | ||||||||||||||||||||||||
|
|
||||||||||||||||||||||||
| # ── MOKO Permissions ────────────────────────────────────────────────────── | ||||||||||||||||||||||||
| -keep class dev.icerock.moko.permissions.** { *; } | ||||||||||||||||||||||||
| -dontwarn dev.icerock.moko.** | ||||||||||||||||||||||||
|
|
||||||||||||||||||||||||
| # ── BuildKonfig (Generated Build Constants) ──────────────────────────────── | ||||||||||||||||||||||||
| -keep class zed.rainxch.githubstore.BuildConfig { *; } | ||||||||||||||||||||||||
| -keep class zed.rainxch.**.BuildKonfig { *; } | ||||||||||||||||||||||||
| -keep class **.BuildKonfig { *; } | ||||||||||||||||||||||||
|
|
||||||||||||||||||||||||
| # === AndroidX Security === | ||||||||||||||||||||||||
| # ── AndroidX Security / Crypto ───────────────────────────────────────────── | ||||||||||||||||||||||||
| -keep class androidx.security.crypto.** { *; } | ||||||||||||||||||||||||
| -keep class com.google.crypto.tink.** { *; } | ||||||||||||||||||||||||
| -dontwarn com.google.crypto.tink.** | ||||||||||||||||||||||||
| -dontwarn com.google.errorprone.annotations.** | ||||||||||||||||||||||||
|
|
||||||||||||||||||||||||
| # BuildConfig | ||||||||||||||||||||||||
| -keep class zed.rainxch.githubstore.BuildConfig { *; } | ||||||||||||||||||||||||
|
|
||||||||||||||||||||||||
| # General | ||||||||||||||||||||||||
| -keepattributes Signature | ||||||||||||||||||||||||
| -keepattributes Exceptions | ||||||||||||||||||||||||
| -keepattributes *Annotation* | ||||||||||||||||||||||||
| -keepattributes SourceFile,LineNumberTable | ||||||||||||||||||||||||
|
|
||||||||||||||||||||||||
| # === START: Auth Fix === | ||||||||||||||||||||||||
| -dontoptimize | ||||||||||||||||||||||||
| -keepattributes *Annotation*,Signature,Exception,InnerClasses,EnclosingMethod | ||||||||||||||||||||||||
| # ── Firebase (if integrated) ────────────────────────────────────────────── | ||||||||||||||||||||||||
| -keep class com.google.firebase.** { *; } | ||||||||||||||||||||||||
| -dontwarn com.google.firebase.** | ||||||||||||||||||||||||
|
|
||||||||||||||||||||||||
| # Keep serialization infrastructure | ||||||||||||||||||||||||
| -keep class kotlinx.serialization.** { *; } | ||||||||||||||||||||||||
| -keep class **$$serializer { *; } | ||||||||||||||||||||||||
| -keepclassmembers @kotlinx.serialization.Serializable class ** { | ||||||||||||||||||||||||
| *** Companion; | ||||||||||||||||||||||||
| *** INSTANCE; | ||||||||||||||||||||||||
| kotlinx.serialization.KSerializer serializer(...); | ||||||||||||||||||||||||
| # ── Enum safety ──────────────────────────────────────────────────────────── | ||||||||||||||||||||||||
| # Keep all enum values and valueOf methods (used by serialization/Room) | ||||||||||||||||||||||||
| -keepclassmembers enum * { | ||||||||||||||||||||||||
| public static **[] values(); | ||||||||||||||||||||||||
| public static ** valueOf(java.lang.String); | ||||||||||||||||||||||||
| } | ||||||||||||||||||||||||
|
|
||||||||||||||||||||||||
| # Keep Ktor plugins | ||||||||||||||||||||||||
| -keep class io.ktor.client.plugins.** { *; } | ||||||||||||||||||||||||
| -keep class io.ktor.serialization.** { *; } | ||||||||||||||||||||||||
|
|
||||||||||||||||||||||||
| # Keep your entire core package (narrow this down later) | ||||||||||||||||||||||||
| -keep class zed.rainxch.githubstore.core.** { *; } | ||||||||||||||||||||||||
| -keepclassmembers class zed.rainxch.githubstore.core.** { *; } | ||||||||||||||||||||||||
| # === END: Auth Fix === | ||||||||||||||||||||||||
|
|
||||||||||||||||||||||||
| -keep class zed.rainxch.githubstore.core.data.remote.dto.** { *; } | ||||||||||||||||||||||||
| -keep class zed.rainxch.githubstore.core.domain.model.auth.** { *; } | ||||||||||||||||||||||||
|
|
||||||||||||||||||||||||
| # If your models are in different packages, list them: | ||||||||||||||||||||||||
| -keep class zed.rainxch.githubstore.**.*DeviceStart* { *; } | ||||||||||||||||||||||||
| -keep class zed.rainxch.githubstore.**.*DeviceToken* { *; } | ||||||||||||||||||||||||
| -keep class zed.rainxch.githubstore.**.*AuthConfig* { *; } | ||||||||||||||||||||||||
|
|
||||||||||||||||||||||||
| # Keep the companion objects explicitly | ||||||||||||||||||||||||
| -keepclassmembers class zed.rainxch.githubstore.**.DeviceStart { | ||||||||||||||||||||||||
| public static ** Companion; | ||||||||||||||||||||||||
| # ── Parcelable ───────────────────────────────────────────────────────────── | ||||||||||||||||||||||||
| -keepclassmembers class * implements android.os.Parcelable { | ||||||||||||||||||||||||
| public static final ** CREATOR; | ||||||||||||||||||||||||
| } | ||||||||||||||||||||||||
| -keepclassmembers class zed.rainxch.githubstore.**.DeviceTokenSuccess { | ||||||||||||||||||||||||
| public static ** Companion; | ||||||||||||||||||||||||
|
|
||||||||||||||||||||||||
| # ── Java Serializable Compatibility ─────────────────────────────────────── | ||||||||||||||||||||||||
| -keepnames class * implements java.io.Serializable | ||||||||||||||||||||||||
| -keepclassmembers class * implements java.io.Serializable { | ||||||||||||||||||||||||
| static final long serialVersionUID; | ||||||||||||||||||||||||
| private static final java.io.ObjectStreamField[] serialPersistentFields; | ||||||||||||||||||||||||
| !static !transient <fields>; | ||||||||||||||||||||||||
| private void writeObject(java.io.ObjectOutputStream); | ||||||||||||||||||||||||
| private void readObject(java.io.ObjectInputStream); | ||||||||||||||||||||||||
| java.lang.Object writeReplace(); | ||||||||||||||||||||||||
| java.lang.Object readResolve(); | ||||||||||||||||||||||||
| } | ||||||||||||||||||||||||
| -keepclassmembers class zed.rainxch.githubstore.**.DeviceTokenError { | ||||||||||||||||||||||||
| public static ** Companion; | ||||||||||||||||||||||||
| } | ||||||||||||||||||||||||
|
|
||||||||||||||||||||||||
| # ── Suppress Warnings for Missing Classes ────────────────────────────────── | ||||||||||||||||||||||||
| -dontwarn java.lang.invoke.StringConcatFactory | ||||||||||||||||||||||||
| -dontwarn javax.annotation.** | ||||||||||||||||||||||||
| -dontwarn org.slf4j.** | ||||||||||||||||||||||||
| -dontwarn org.codehaus.mojo.animal_sniffer.** | ||||||||||||||||||||||||
Uh oh!
There was an error while loading. Please reload this page.