3

MavenFlexmojosプラグインを介してコンパイルされた非常に単純なFlexSWCモジュールがあります。このモジュールは、ソースの生成フェーズでflexmojos:generateゴールを使用して、Javaサービスおよびドメインクラスに相当するActionscript3を作成します。通常のソースはに格納されsrc/main/flex、生成されたソースはにありsrc/main/flex-generatedます。生成されたソースはSubversionにチェックインされません。他の多くのflexmojosユーザーと同様に、build-helper:add-sourceゴールを使用して、この2番目のソースツリーをコンパイルに追加します。これは何ヶ月もうまく機能しており、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コンパイラのsource-pathが両方のソースディレクトリをどれほどうまく表現しているかに注目してください。このセットアップは、SWCアーティファクトを正常にパッケージ化、インストール、および展開します。ただし、リリースプロセスを自動化するために、Mavenリリースプラグインを使用したいと思います。release:prepareゴールはうまくいきます。ただし、いくつかの不明な理由により、flexコンパイラが生成されたソースディレクトリを渡されないため、release:performの目標は失敗します。

[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 

ファイルは適切な場所で生成され、ビルドヘルパーは正しく呼び出されますが、flexcompiler.source-pathに生成されたソースディレクトリがないため、Flexクラスが見つかりませんというエラーが生成されることに注意してください。この問題について私にとって非常に驚くべきことは、release:prepareがフォークされたMavenライフサイクルで[clean、verify]を実行し、それが機能することですが、release:performは機能しません...それが問題なフォークです。

ビルドヘルパープラグインの構成は次のとおりです。

        <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>

ビルドヘルパープラグを捨ててflexmojoのsourcePaths構成を使用すると、すべてが正常に機能することに注意してください。

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

ただし、sourcePathsは非推奨であり、複数のフレックスソースツリーを持つユーザーにとっての前進はビルドヘルパーです。

4

3 に答える 3

1

flex で生成されたソースは SVN にチェックインされないため、targetフォルダーの下に生成する必要がある場合があります。これにより、リリースプラグインが混乱する可能性があると思います。そのフォルダーの下にソースを生成し、build-helper プラグインを使用してビルドに追加してみてください。

于 2010-11-24T17:08:48.260 に答える
1

ここでも同じ問題を抱えています。ファイルがバージョン管理にチェックインされているかどうかは問題ではないようです。チェックインしているかどうかに関係なく、結果は同じだったからです。

問題が解決するかどうかを確認するために、同じソース パスに追加してみますが、これは確かに妥協です。初めてそれをやろうとしたとき、GraniteDS は特に気にしていないように見えました。

編集: flexmojos プラグインのソース コードを確認したところ、sourcePaths は非推奨ではありません。これはトランクからのチェックアウト後のものでした

svn co http://svn.sonatype.org/flexmojos/trunk flexmojos
于 2011-03-29T22:20:30.110 に答える
1

ほら、

jar 内に .xml ファイルをパッケージ化したいという点で、これと同様の問題がありました。それを追加するには、build-helper-maven-plugin を使用して、上記のように追加しました。ビルド中は問題なく動作しましたが、release:perform になると .xml ファイルが失われます。

代わりに POM のセクションを使用すること<resources>で、はるかに良い時間を過ごすことができました。また、この MaestroDev ユーザー ガイドのアドバイスに従い、.xml ファイルをバイナリ ファイルとして扱い、POM にいくつかの情報を入れて、フィルタリングされないようにしました。

MaestroDev ユーザー ガイド(下部の「バイナリ リソースのフィルタリングの防止」)

これは私にとってはうまくいくようでした。flex がどのように構築されているかという理由で、それがあなたに適しているかどうかはわかりませんが、しばらくの間答えがあったようには見えず、これがそれかもしれません :)

于 2013-04-25T10:44:00.103 に答える