Как обфускать одну банку с войны с помощью proguard и maven

I'm a little puzzled by proguard. I have this setting in my pom.xml Firstly, < injar > tag doesn't work...final call of proguard doesn't contain -injars if I use this tag. Secondly, I'm not sure if it's possible to obfuscate only one jar that takes place in WEB-INF/lib(I compile all my code in the one jar) and filter every other libs.


        com.pyx4me
        proguard-maven-plugin
        2.0.4
        
            
                package
                
                    proguard
                
            
        
        
            4.8
            true
            1024m
            false 
            
                
                
            
            target/Test-obf.war 

            false
            ${project.build.directory}
                ${basedir}\proguard.conf
        
            ${java.home}/lib/rt.jar
        
        false
        false
    
    
        
            net.sf.proguard
            proguard
            4.4
            runtime
        
    

С этой конфигурацией у меня много предупреждений, потому что кажется, что proguard пытается обфускать каждую банку в WEB-INF/lib Может кто-то рассказать об этом. Заранее спасибо.

Added: The problem with output that stands in front of all parameters was very tricky for me. As I understood you should not use ${basedir} when you specify both injars and outjars in pom.xml. Cause ${basedir} turns to absolute path and intenaly proguard also put an absolute path.

2
nl ja de
btw, ссылки на внешние библиотеки должны быть указаны с помощью опции -libraryjars !
добавлено автор Nikolay Kuznetsov, источник

1 ответы

Прежде всего, я никогда не использовал ProGuard от Maven, только от Ant.

I compare your configuration file with one in here

 
     
     
 
 ${project.build.finalName}.jar
 ${project.build.finalName}-small.jar

В вашем случае вы настраиваете injars и outjar по-разному, что странно видеть.

(Я скомпилирую весь свой код в одной банке) и фильтрую все другие библиотеки.    У меня много предупреждений, потому что кажется, что proguard пытается обфускать каждую банку в WEB-INF/lib

In that case warnings come not from the fact that ProGuard tries to compile all the libs, but because when it obfuscates your filtered code it wants to see reference to extarnal libs. See this.

Вам нужно будет добавить для каждой внешней баночки, указанной в вашем коде

path/lib.jar

Вероятно, это поможет избежать многих предупреждений, но реальное искусство начинается при настройке параметров -keep . Я бы рекомендовал начать с этой конфигурации https://stackoverflow.com/a/7511926/1360074 Если это работает в конечном итоге, попытайтесь получить больше обфускации.

0
добавлено
@FedorSkrynnikov Обфускайте эту банку, прежде чем положить ее в войну.
добавлено автор Nikolay Kuznetsov, источник
@FedorSkrynnikov, попробуйте запутать сначала без Maven, с обычным Proguard, используя конфигурационный файл в ответе. После этого переместите конфигурацию в Maven.
добавлено автор Nikolay Kuznetsov, источник
@FedorSkrynnikov, затем попробуйте запутаться без GUI, чтобы больше узнать о параметрах, и, пожалуйста, укажите обновленный скрипт maven.
добавлено автор Nikolay Kuznetsov, источник
о разных путях injar и outjar - это первая часть моего вопроса. С тегом у меня нет опции -injar в моем последнем вызове proguard. О это понятно для меня, когда мне нужно обфускать 1 отдельную банку. Но все мои библиотеки и код являются файлом войны. Как фильтровать только одну мою банку? Или, может быть, мне нужно обфускать мою банку, прежде чем упаковать ее в войну?
добавлено автор Fedor Skrynnikov, источник
Я изменил фазу, чтобы подготовить-пакет, но все же com.pyx4me не пропускает injar, который я указал перед выходом. И это вызывает java.io.IOException: вход не содержит классов. Вы указали правильные параметры «-injars»?
добавлено автор Fedor Skrynnikov, источник
Да. Я это сделал. В gui tool proguard запутывается с какой-либо ошибкой. Но пока я пытаюсь использовать его через maven, он передает -outputjar перед тем, что я указал в pom.xml. И это приводит к тому, что «вход не содержит ошибок классов»
добавлено автор Fedor Skrynnikov, источник
Проблема с выходом была очень сложной для меня. Поскольку я понял, что вы не должны использовать $ {basedir}, когда вы указываете как injars, так и outjars в pom.xml. Причина $ {basedir} превращается в абсолютный путь, а intenaly proguard также устанавливает абсолютный путь. В любом случае спасибо за вашу поддержку. Я приму свой ответ.
добавлено автор Fedor Skrynnikov, источник
pro.jvm
pro.jvm
3 503 участник(ов)

Сообщество разработчиков Java Scala Kotlin Groovy Clojure Чат для нач-их: @javastart Наш сайт: projvm.com projvm.ru Наш канал: @proJVM Вакансии: @jvmjobs Конфы: @jvmconf

Java & Co
Java & Co
2 370 участник(ов)

Можно обсуждать с матом и без всё, что касается жабы, вплоть до холиваров. НЕ ИМЕЕТ ОТНОШЕНИЯ К САЙТУ JAVARUSH.RU ПРАВИЛА - https://t.me/javarush/75723 Вакансии сюда - https://telegram.me/joinchat/B7IzvUCnfo6d8t3yIxKguQ По вопросам - @thedude

learn.java
learn.java
1 888 участник(ов)

Чат для начинающих и не только Статистика: https://combot.org/chat/-1001083535868 Основной чат - @jvmchat

Java Underground
Java Underground
169 участник(ов)

https://vk.com/javatutorial

Javanese Questions
Javanese Questions
109 участник(ов)

Чат предназначен для обмена знаниями строго в формате в вопрос-ответ. Тема — Java, Kotlin и Android. Вопрос должен быть предварительно прогуглен, понятно и грамотно сформулирован, помечен хэштегами. Ответ — тем более. Куски кода размером в несколько строк можно писать прямо здесь, для больших кусков кода стоит использовать http://gist.github.com/, http://pastebin.com/, https://codeshare.io/ или любой аналогичный сервис. В некоторых случаях можно прикреплять скриншоты. Стикеры и гифки запрещены. Дополнять и уточнять вопросы и ответы — редактированием исходного сообщения. Обсуждения должны приводить к редактированию вопроса/ответа и удаляться. По хештегам можно искать существующие вопросы и овтеты: #вопрос #ответ #git #generics #java #server #awt #javafx #swing #kotlin #anko #tornadofx #ktor #android #recyclerView #performance #arch #network #permissions #storage #async