Пользовательский плагин Maven для шифрования - PullRequest
3 голосов
/ 30 августа 2010

Я перевожу скрипт Ant в Maven 2, и у меня возникает такая проблема: скрипт Ant использует довольно простой класс Java для шифрования файлов следующим образом:

<target name="encrypt">
    <java classname="DESEncrypter">
        <classpath>
            <pathelement path="...classpath for this thing..." />
        </classpath>
        <arg line="fileToEncrypt.properties fileEncrypted.properties" />
    </java>
</target>

Этот DESEncrypter является скомпилированнымкласс, источник которого не принадлежит проекту, который я конвертирую, но используется аналогично в других проектах.Возможно, мне нужно создать плагин maven для повторного использования, но я не хочу делать это сейчас.Мой вопрос: в какой каталог я помещаю класс DESEncrypter и как его вызвать?Возможно, вы используете плагин exec: java?Я не думаю, что шифратор принадлежит к каталогам src, test или resources.

Очевидно, я не хочу включать класс шифра в конечный продукт, только в зашифрованные файлы.

Ответы [ 3 ]

3 голосов
/ 31 августа 2010

Мой вопрос: в какой каталог я помещаю класс DESEncrypter и как его вызывать?Возможно, вы используете плагин exec: java?Я не думаю, что шифтер принадлежит к каталогам src, test или resources.

Очень простым решением было бы использование Maven AntRun Plugin .Что касается местоположения вашего шифратора, вы можете:

  • поместить его в отдельный модуль, который вы можете объявить как плагин OF (см. этот пример * 1013)*)
  • сохраните его в текущем модуле, в дереве исходного кода и настройте подключаемый модуль Maven JAR , чтобы исключить его с помощью excludes.
2 голосов
/ 31 августа 2010

Третий очевидный ответ (кроме exec: java и antrun) - GMaven , который позволяет выполнять код Groovy из внешнего класса или встроенного кода из pom. Так что, если вам нужна только одна строка, встраивание ее в ваш pom - это быстрый и простой способ реализации вещей (в противном случае вы должны использовать внешний скрипт). Кстати, если вы не знаете groovy: это в основном java с некоторым дополнительным синтаксическим искажением.

Вот пример конфигурации (конечно, вы должны заменить используемый вами артефакт и класс):

<plugin>
    <groupId>org.codehaus.groovy.maven</groupId>
    <artifactId>gmaven-plugin</artifactId>
    <dependencies>
        <dependency>
            <groupId>your.library.com</groupId>
            <artifactId>your-library</artifactId>
            <version>1.2.3</version>
        </dependency>
    </dependencies>
    <executions>
        <execution>
            <phase>process-classes</phase>
            <!-- Or any other phase -->
            <goals>
                <goal>execute</goal>
            </goals>
            <configuration>
                <source><![CDATA[
                import com.encryption.*;
                new Encrypter().encrypt(
                    new File(project.build.outputDirectory, 
                                                    'fileToEncrypt.properties'),
                    new File(project.build.outputDirectory, 
                                                    'encryptedFile.properties')
                )
                ]]></source>
            </configuration>
        </execution>
    </executions>
</plugin>

(Делая артефакт шифрования зависимостью плагина, вы исключаете его из развернутых зависимостей, но это справедливо и для antrun и exec: java)

1 голос
/ 30 августа 2010

Возможно, вы захотите просто использовать плагин AntRun, он должен позволить вам сделать что-либо из Ant с минимальным суетой.Вам понадобится зависимость от класса / jar, который вы использовали, но предоставив ему область тестирования или при условии, что он не будет упакован в ваш конечный продукт.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...