Flexmojos-maven-plugin - Как настроить несколько исходных файлов mxml для создания нескольких файлов swf?

Текущий рабочий код:

Я могу успешно создать гибкий проект с помощью flexmojos-maven-plugin. Однако я могу предоставить только один «исходный файл» в конфигурации моего плагина. См. Ниже мой рабочий файл pom.xml, который правильно создает файл Main.mxml из каталога src. Он успешно генерирует swf-файл для Main.mxml:

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
    <modelVersion>4.0.0</modelVersion>

    <groupId>com.test</groupId>
    <artifactId>TA_UI_Test2</artifactId>
    <version>1.0-SNAPSHOT</version>
    <packaging>swf</packaging>
    <name>TA_UI_Test2 Flex</name>

    <dependencies>
        <dependency>
            <groupId>com.adobe.flex.framework</groupId>
            <artifactId>playerglobal</artifactId>
            <version>10-3.3.0.4852</version>
            <type>swc</type>
        </dependency>
        <dependency>
            <groupId>com.adobe.flex.framework</groupId>
            <artifactId>rpc</artifactId>
            <version>4.5.1.21328</version>
            <type>swc</type>
        </dependency>
        <dependency>
            <groupId>com.adobe.flex.framework</groupId>
            <artifactId>framework</artifactId>
            <version>3.2.0.3958</version>
            <type>swc</type>
        </dependency>
        <dependency>
            <groupId>com.adobe.flex.framework</groupId>
            <artifactId>mx</artifactId>
            <version>4.5.0.19786</version>
            <type>pom</type>
        </dependency>
    </dependencies>

    <build>
        <sourceDirectory>src</sourceDirectory>

        <plugins>
            <plugin>
                <groupId>org.sonatype.flexmojos</groupId>
                <artifactId>flexmojos-maven-plugin</artifactId>
                <version>3.8</version>
                <extensions>true</extensions>
                <configuration>
                    <sourceFile>Main.mxml</sourceFile>
                    <debug>true</debug>
                    <storepass/>
                </configuration>
                <dependencies>
                    <dependency>
                        <groupId>com.adobe.flex</groupId>
                        <artifactId>compiler</artifactId>
                        <version>3.2.0.3958</version>
                        <type>pom</type>
                    </dependency>
                </dependencies>
            </plugin>
        </plugins>

    </build>

</project>

Описание проблемы:

Теперь у меня есть несколько других файлов mxml в моем каталоге src, то есть все файлы mxml в одном каталоге src. Как мне добавить их в указанный выше плагин, который ожидает только одно имя в конфигурации sourceFile?

Что я пробовал:

Я попытался скопировать несколько блоков flexmojos-maven-plugin, и для каждого из них был указан другой исходный файл. Однако это не помогает, потому что maven просто генерирует окончательный swf-файл из последнего блока flexmojos-maven-plugin. Например, если первый блок плагина имеет файл sourceFile Main.mxml, а второй блок плагина имеет файл sourceFile Secondary.mxml, то «swf» будет сгенерирован только для Secondary.mxml, а не для Main.mxml.

Не могли бы вы предоставить какие-либо другие предложения по созданию отдельных файлов swf для соответствующих файлов mxml с использованием одной сборки pom / maven?


person Vaibhav Shah    schedule 07.02.2018    source источник


Ответы (1)


После довольно большого количества исследований и разработок, опробования нескольких хаков и ценного предложения Кристофера Дутца на этот форум, наконец, доступно чистое решение для вышеуказанной проблемы. Вот обновленный файл pom.xml, который будет генерировать отдельные файлы swf для предоставленных исходных файлов:

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
    <modelVersion>4.0.0</modelVersion>

    <groupId>com.test</groupId>
    <artifactId>TA_UI_Test2</artifactId>
    <version>1.0-SNAPSHOT</version>
    <packaging>swf</packaging>
    <name>TA_UI_Test2 Flex</name>

    <dependencies>
        <dependency>
            <groupId>com.adobe.flex.framework</groupId>
            <artifactId>playerglobal</artifactId>
            <version>10-3.3.0.4852</version>
            <type>swc</type>
        </dependency>
        <dependency>
            <groupId>com.adobe.flex.framework</groupId>
            <artifactId>rpc</artifactId>
            <version>4.5.1.21328</version>
            <type>swc</type>
        </dependency>
        <dependency>
            <groupId>com.adobe.flex.framework</groupId>
            <artifactId>framework</artifactId>
            <version>3.2.0.3958</version>
            <type>swc</type>
        </dependency>
        <dependency>
            <groupId>com.adobe.flex.framework</groupId>
            <artifactId>mx</artifactId>
            <version>4.5.0.19786</version>
            <type>pom</type>
        </dependency>
    </dependencies>

    <build>
        <sourceDirectory>src</sourceDirectory>

        <plugins>
            <plugin>
                <groupId>org.sonatype.flexmojos</groupId>
                <artifactId>flexmojos-maven-plugin</artifactId>
                <version>3.8</version>
                <extensions>true</extensions>
                <configuration>
                    <storepass></storepass>
                </configuration>
                <executions>
                    <execution>
                        <id>default-compile-swf</id> <!--DO NOT change this ID, else the plugin execution will fail.-->
                        <configuration>
                            <sourceFile>File1.mxml</sourceFile>
                            <debug>true</debug>
                            <output>${basedir}/target/File1.swf</output>
                        </configuration>
                        <goals>
                            <goal>compile-swf</goal>
                        </goals>
                    </execution>
                    <execution>
                        <id>default-compile-swf-2</id>
                        <configuration>
                            <sourceFile>File2.mxml</sourceFile>
                            <debug>true</debug>
                            <output>${basedir}/target/File2.swf</output>
                        </configuration>
                        <goals>
                            <goal>compile-swf</goal>
                        </goals>
                    </execution>
                    <execution>
                        <id>default-compile-swf-3</id>
                        <configuration>
                            <sourceFile>File3.mxml</sourceFile>
                            <debug>true</debug>
                            <output>${basedir}/target/File3.swf</output>
                        </configuration>
                        <goals>
                            <goal>compile-swf</goal>
                        </goals>
                    </execution>
                </executions>
                <dependencies>
                    <dependency>
                        <groupId>com.adobe.flex</groupId>
                        <artifactId>compiler</artifactId>
                        <version>3.2.0.3958</version>
                        <type>pom</type>
                    </dependency>
                </dependencies>
            </plugin>
        </plugins>

    </build>

</project>

Важное примечание: вы должны указать идентификатор любого из запусков как default-compile-swf, без которого невозможно будет идентифицировать исходный файл. Для получения дополнительной информации об ошибке, которую он выдает, обратитесь к приведенной выше ссылке на форум, где я обсуждал то же самое.

Надеюсь, это когда-нибудь поможет кому-то :)

person Vaibhav Shah    schedule 09.02.2018