Выпуск Maven: выполнение, кажется, ломает сборку-помощника: add-source - PullRequest
3 голосов
/ 15 ноября 2010

У меня довольно простой модуль Flex SWC, который компилируется с помощью плагина Maven Flexmojos.Этот модуль также использует flexmojos: генерировать цель на этапе создания источников для создания эквивалентов Actionscript3 моих Java-сервисов и классов доменов.Обычные источники находятся в src/main/flex, а сгенерированные источники - в src/main/flex-generated.Сгенерированные источники НЕ проверяются в Subversion.Как и многие другие пользователи flexmojos, я использую цель build-helper: add-source, чтобы добавить это второе дерево исходников в мою компиляцию.Уже несколько месяцев это работает хорошо, и выходные данные Maven обычно выглядят так:

[INFO] ------------------------------------------------------------------------
[INFO] Building myproj Core Client -- Flex Service
[INFO]    task-segment: [deploy]
[INFO] ------------------------------------------------------------------------
[INFO] [flexmojos:generate {execution: create-actionscript-classes}]
[INFO] Flexmojos 3.7.1
[INFO]   Apache License - Version 2.0 (NO WARRANTY) - See COPYRIGHT file
[INFO] flexmojos 3.7.1 - GNU GPL License (NO WARRANTY) - See COPYRIGHT file
[INFO] Calling the generator for each Java class.
[INFO]   Generating: /home/bsmith/develop/myproj/myproj-core/tags/myproj-core-1.0.2/flex-service/src/main/flex-generated/com/myprojvision/core/domain/security/Group.as
.......
[INFO] [build-helper:add-source {execution: add-source}]
[INFO] Source directory: /home/bsmith/develop/myproj/myproj-core/tags/myproj-core-1.0.2/flex-service/src/main/flex-generated added.
[INFO] Flex compiler configurations:
.....
-compiler.source-path /home/bsmith/develop/myproj/myproj-core/tags/myproj-core-1.0.2/flex-service/src/main/flex /home/bsmith/develop/myproj/myproj-core/tags/myproj-core-1.0.2/flex-service/src/main/flex

Обратите внимание на то, насколько хорошо путь-путь компилятора flex представляет обе директории с исходным кодом.Эта установка успешно упакует, установит и развернет артефакт SWC.Однако теперь мы хотим использовать плагин релиза Maven для автоматизации процесса выпуска.Цель release:prepare работает отлично.Однако выпуск release: execute target завершается неудачно, поскольку компилятору flex не передан сгенерированный исходный каталог по неизвестной причине:

[INFO] [INFO] ------------------------------------------------------------------------
[INFO] [INFO] Building myproj Core Client -- Flex Service
[INFO] [INFO]    task-segment: [deploy]
[INFO] [INFO] ------------------------------------------------------------------------
[INFO] [INFO] [flexmojos:generate {execution: create-actionscript-classes}]
[INFO] [INFO] Flexmojos 3.7.1
[INFO] [INFO]    Apache License - Version 2.0 (NO WARRANTY) - See COPYRIGHT file
[INFO] [INFO] Calling the generator for each Java class.
[INFO] [INFO]   Generating: /home/bsmith/develop/myproj/myproj-core/trunk/target/checkout/flex-service/src/main/flex-generated/com/myprojvision/core/domain/security/Group.as
...
[INFO] [INFO] [build-helper:add-source {execution: add-source}]
[INFO] [INFO] Source directory: /home/bsmith/develop/myproj/myproj-core/trunk/target/checkout/flex-service/src/main/flex-generated added.
...
[INFO] [INFO] Flex compiler configurations:
[INFO] -compiler.source-path /home/bsmith/develop/myproj/myproj-core/trunk/target/checkout/flex-service/src/main/flex 

Обратите внимание, что файлы создаются в нужном месте, помощник по сборке правильно вызывается, но в гибком compiler.source-path отсутствует сгенерированный исходный каталог, и, таким образом, возникает ошибка Flex-not-found.Что поразительно для меня в этой проблеме, так это выпуск: prepare делает [очистить, проверить] в разветвленном жизненном цикле Maven, и он работает, но выпустить: выполнить не ... так что не похоже, что этоВ этом проблема.

Вот конфигурация подключаемого модуля build-helper:

        <plugin>
            <groupId>org.codehaus.mojo</groupId>
            <artifactId>build-helper-maven-plugin</artifactId>
            <executions>
                <execution>
                    <id>add-source</id>
                    <phase>generate-sources</phase>
                    <goals>
                        <goal>add-source</goal>
                    </goals>
                    <configuration>
                        <sources>
                            <source>${project.basedir}/src/main/flex-generated</source>
                        </sources>
                    </configuration>
                </execution>
            </executions>
        </plugin>

Обратите внимание, что если я откажусь от подключаемого модуля build-helper и использую конфигурацию flexPhos flexmojo, товсе отлично работает

<sourcePaths>
   <path>${project.basedir}/src/main/flex</path>
   <path>${project.basedir}/src/main/flex-generated</path>
</sourcePaths>

Однако sourcePaths устарела, и путь для тех, у кого несколько деревьев гибких исходных кодов, является помощником по сборке.

Ответы [ 3 ]

1 голос
/ 30 марта 2011

И здесь та же проблема. Кажется, не имеет значения, проверяются ли файлы в системе контроля версий или нет, потому что я пробовал как с проверкой, так и без нее, и результат был одинаковым.

Я попытаюсь добавить мой к тому же исходному пути, чтобы посмотреть, решит ли он проблему, но это, безусловно, компромисс. В первый раз, когда я попытался сделать это, казалось, что GraniteDS не особенно заботился об этом.

РЕДАКТИРОВАТЬ: Я только что посмотрел на исходный код для плагина flexmojos и sourcePaths не устарела. Это было после оформления заказа из багажника

svn co http://svn.sonatype.org/flexmojos/trunk flexmojos
1 голос
/ 25 апреля 2013

lo,

У меня была проблема, похожая на эту, в которой я хотел упаковать файл .xml в свой jar.Чтобы добавить его, я использовал build-helper-maven-plugin и добавил его, как вы сделали выше.Работал нормально во время сборки, но когда дело дошло до релиза: выполнить его могло бы пропустить файл .xml.

Я обнаружил вместо этого, используя вместо этого секцию POM <resources>, у меня было намного лучшее время.Я также воспользовался советом этого Руководства пользователя MaestroDev, рассматривая файл .xml как двоичный файл и помещая некоторую информацию в POM, чтобы предотвратить его фильтрацию.

Руководство пользователя MaestroDev (внизу под названием «Предотвращение фильтрации бинарных ресурсов»)

Мне показалось, что это работает.Не уверен, подходит ли он вам из-за того, как построен flex, но он не выглядит так, как будто вы уже давно получили ответ, и это может быть так:)

1 голос
/ 24 ноября 2010

Кроме того, сгенерированные флексом источники не проверяются в SVN, возможно, вам нужно сгенерировать их в папке target. Я думаю, что это может запутать релизный плагин. Попробуйте сгенерировать исходники в этой папке и добавить его в сборку с помощью плагина build-helper.

...