Привет %username%,
Сегодня, я бы хотел, представить сообществу утилиту написанную мои другом Николаем Бабинским — Cactus Obfuscator.
Cactus Obfuscator — это трех-модульное приложение созданное для обфускации JavaScript и CSS кода.
Cactus Obfuscator использует:
Apache Maven — плагин для Maven версий 2-3.
YUI Compressor — js/css обфускация.
Simple XML — XML мэппинг и (де)сериализация.
Содержание:
1. Использование как Maven плагина.
2. Использование как консольного приложения.
3. Создание конфигурационных файлов(XML).
Cactus может использоваться, как Maven плагин в java-проектах, а так же, как консольная утилита.
Использование как Maven плагина.
Это очевидно, что для использования Maven плагина, нам понадобится установленный Maven версии 2 или 3 (на скачивание предоставлен cactus-plugin.jar для 3 версии Maven, чтобы получить *.jar для 2 версии достаточно простоотослать СМС собрать его из исходников той версией, что вам нужна).
1. Чтобы собрать Cactus из исходников требуется выполнить следующие действия:
— Скачать и перейти в скачанную директорию:
— Установка:
2. Установка скомпилированного пакета cactus-plugin.jar.
Открываем терминал и пишем следующее:
Если инсталяция прошла успешно видим примерно следующюю картину:
Поздравляю, Cactus успешно установлен. Осталось сконфигурирофать pom.xml вашего проекта:
Где:
baseDirectory — (необязательное)директория проекта. По умолчанию ${project.basedir}.
jsBaseDirectory — (обязательное) Относительный путь от baseDirectory до директории с JavaScript/CSS кодом.
confingDirectory — (необязательное) путь до папки с конфигурационным файлом cactus.xml, по умолчанию тот же что и jsBaseDirectory.
outputDirectory — (необязательно) относительный путь от jsBaseDirectory до директории с обработанными/обфусцированными файлами. Директория должна существовать.
mode — (необязательно) Существует два режима работы — PRODUCTION/DEBUG. По умолчанию режим установлен в PRODUCTION, то есть файлы склеиваются и обфусцируются. В режиме DEBUG — файлы только склеиваются, но не обфусцируются.
После подключения в pom.xml вы можете попробовать mvn package, чтобы собрать проект. Так же Cactus плагин может использоваться и без проекта, все что нам нужно это наличие cactus.xml файла. Зайдя в папку с cactus.xml достаточно набрать в консоли:
Использование как консольного приложения.
Cactus может использоваться и без Maven, просто из консоли. Все что нам нужно это установленный на машине JVM.
Как использовать:
1. Создать cactus.xml конфигурационный файл.
2. Запустить cactus-tool:
По умолчанию cactus-tool требует только один параметр -c — путь до папки содержащей cactus.xml.
Так же есть следующие параметры:
-d — относительный путь до js файлов от директории указанной в -c
-o — относительный ауть до директории с результатами обфускации. Если не указан то результаты будут помещены в директорию -d
-m — режим работы PRODUCTION/DEBUG. Описан выше.
Пример использования:
Создание конфигурационных файлов(XML)
Пример конфигурационного файла:
Пример показывает конфигурационный файл с тремя файлами на выход (needles, в переводе — иголки потому и кактус, собственно говоря): ext-3.1.0.js, jquery-1.5.2.js and test.css
После запуска:
— Мы получим как результат 2 js файла.
Тэг file позволяет вводить URL, пути, имена файлов. Все папки должны быть внутри BASE директории(-c). Например для структуры:
Нужен следующий cactus.xml:
Далее запускаем cactus-tool из root/batch директории:
В данном примере cactus.xml находится в js директории поэтому -c и -d параметры совпадают.
В результате мы получим test.js файл в папке root/webappjs/cache, который является результатом слияния и обфускации файла boo.js, всех файлов из директории utils и utils/parser/xmlparser.js.
Последовательность тегов file важна, она отражает в каком порядке будут склеены файлы в результате.
UPD
Дабы зарубить на корню огромное колличество ненужной полемики, напишу еще раз, что для обфускации используется YUI Compressor.
Сам по себе, Cactus написан для упрощения сборки и сжатия js/css файлов.
Примеры:
До сжатия
После сжатия
Сегодня, я бы хотел, представить сообществу утилиту написанную мои другом Николаем Бабинским — Cactus Obfuscator.
Cactus Obfuscator — это трех-модульное приложение созданное для обфускации JavaScript и CSS кода.
Cactus Obfuscator использует:
Apache Maven — плагин для Maven версий 2-3.
YUI Compressor — js/css обфускация.
Simple XML — XML мэппинг и (де)сериализация.
Содержание:
1. Использование как Maven плагина.
2. Использование как консольного приложения.
3. Создание конфигурационных файлов(XML).
Cactus может использоваться, как Maven плагин в java-проектах, а так же, как консольная утилита.
Использование как Maven плагина.
Это очевидно, что для использования Maven плагина, нам понадобится установленный Maven версии 2 или 3 (на скачивание предоставлен cactus-plugin.jar для 3 версии Maven, чтобы получить *.jar для 2 версии достаточно просто
1. Чтобы собрать Cactus из исходников требуется выполнить следующие действия:
— Скачать и перейти в скачанную директорию:
git clone git@github.com:nbabinski/Cactus.git
cd Cactus
— Установка:
mvn install
2. Установка скомпилированного пакета cactus-plugin.jar.
Открываем терминал и пишем следующее:
mvn install:install-file -Dfile=DOWNLOAD_FOLDER/cactus-plugin.jar -DgroupId=com.cactus -DartifactId=cactus-plugin -Dpackaging=maven-plugin -Dversion=0.1
Где «DOWNLOAD_FOLDER» путь до cactus-plugin.jarЕсли инсталяция прошла успешно видим примерно следующюю картину:
[INFO] BUILD SUCCESS
[INFO] ------------------------------------------------------------------------
[INFO] Total time: 0.702s
[INFO] Finished at: Tue Apr 19 01:36:31 EEST 2011
[INFO] Final Memory: 2M/48M
Поздравляю, Cactus успешно установлен. Осталось сконфигурирофать pom.xml вашего проекта:
<build>
<plugins>
...
<plugin>
<groupId>com.cactus</groupId>
<artifactId>cactus-plugin</artifactId>
<version>0.1</version>
<configuration>
<jsBaseDirectory>src/main/webapp/js</jsBaseDirectory>
<outputDirectory>cache</outputDirectory>
</configuration>
<executions>
<execution>
<goals>
<goal>obfuscate</goal>
</goals>
</execution>
</executions>
</plugin>
...
</plugins>
</build>
Где:
baseDirectory — (необязательное)директория проекта. По умолчанию ${project.basedir}.
jsBaseDirectory — (обязательное) Относительный путь от baseDirectory до директории с JavaScript/CSS кодом.
confingDirectory — (необязательное) путь до папки с конфигурационным файлом cactus.xml, по умолчанию тот же что и jsBaseDirectory.
outputDirectory — (необязательно) относительный путь от jsBaseDirectory до директории с обработанными/обфусцированными файлами. Директория должна существовать.
mode — (необязательно) Существует два режима работы — PRODUCTION/DEBUG. По умолчанию режим установлен в PRODUCTION, то есть файлы склеиваются и обфусцируются. В режиме DEBUG — файлы только склеиваются, но не обфусцируются.
После подключения в pom.xml вы можете попробовать mvn package, чтобы собрать проект. Так же Cactus плагин может использоваться и без проекта, все что нам нужно это наличие cactus.xml файла. Зайдя в папку с cactus.xml достаточно набрать в консоли:
mvn com.cactus:cactus-plugin:obfuscate
Использование как консольного приложения.
Cactus может использоваться и без Maven, просто из консоли. Все что нам нужно это установленный на машине JVM.
Как использовать:
1. Создать cactus.xml конфигурационный файл.
2. Запустить cactus-tool:
java -jar cactus-tool.jar
По умолчанию cactus-tool требует только один параметр -c — путь до папки содержащей cactus.xml.
Так же есть следующие параметры:
-d — относительный путь до js файлов от директории указанной в -c
-o — относительный ауть до директории с результатами обфускации. Если не указан то результаты будут помещены в директорию -d
-m — режим работы PRODUCTION/DEBUG. Описан выше.
Пример использования:
java -jar cactus-tool.jar -d ../web/js -o cache
Создание конфигурационных файлов(XML)
Пример конфигурационного файла:
<?xml version="1.0" encoding="UTF-8"?>
<cactus>
<js>
<needles>
<needle>
<output>ext-3.1.0.js</output>
<files>
<file>https://ajax.googleapis.com/ajax/libs/ext-core/3.1.0/ext-core-debug.js</file>
</files>
</needle>
<needle>
<output>jquery-1.5.2.js</output>
<files>
<file>https://ajax.googleapis.com/ajax/libs/jquery/1.5.2/jquery.js</file>
</files>
</needle>
</needles>
</js>
<css>
<needles>
<needle>
<output>test.css</output>
<files>
<file>YOUR_CSS_FILE_HERE</file>
</files>
</needle>
</needles>
</css>
</cactus>
Пример показывает конфигурационный файл с тремя файлами на выход (needles, в переводе — иголки потому и кактус, собственно говоря): ext-3.1.0.js, jquery-1.5.2.js and test.css
После запуска:
mkdir cactus-test
cd cactus-test
//copy cactus.xml and cactus-tool.jar in cactus-test folder
java -jar cactus-tool.jar -c PATH_TO_CACTUS_CONFIG_FOLDER
— Мы получим как результат 2 js файла.
Тэг file позволяет вводить URL, пути, имена файлов. Все папки должны быть внутри BASE директории(-c). Например для структуры:
|-root
|--batch
| | - cactus-tool.jar
|--webapp
|----js
| |--cactus.xml
| |--boo.js
| |--foo.js
| |--utils
| | |--array.js
| | |--string.js
| | |--parser
| | | |--xmlparser.js
| |--cache
Нужен следующий cactus.xml:
<?xml version="1.0" encoding="UTF-8"?>
<cactus>
<js>
<needles>
<needle>
<output>test.js</output>
<files>
<file>boo.js</file>
<file>utils</file> <!-- get all js files from utils folder-->
<file>utils/parser/xmlparser.js</file>
</files>
</needle>
</needles>
</js>
</cactus>
Далее запускаем cactus-tool из root/batch директории:
java -jar cactus-tool.jar -c ../webapp/js -d ../webapp/js -o cache
В данном примере cactus.xml находится в js директории поэтому -c и -d параметры совпадают.
В результате мы получим test.js файл в папке root/webappjs/cache, который является результатом слияния и обфускации файла boo.js, всех файлов из директории utils и utils/parser/xmlparser.js.
Последовательность тегов file важна, она отражает в каком порядке будут склеены файлы в результате.
UPD
Дабы зарубить на корню огромное колличество ненужной полемики, напишу еще раз, что для обфускации используется YUI Compressor.
Сам по себе, Cactus написан для упрощения сборки и сжатия js/css файлов.
Примеры:
До сжатия
После сжатия