4

Mavenプラグインを使用して、複数のjsファイルを縮小または難読化せずに1つに集約/アセンブルしたいと考えています。私はすでに yui プラグインを使用して、いくつかの js ファイルを 1 つに難読化しています。

       <plugin>
            <groupId>net.alchim31.maven</groupId>
            <artifactId>yuicompressor-maven-plugin</artifactId>
            <version>1.2</version>
            <executions>
                <execution>
                    <id>obfuscate</id>
                    <phase>process-resources</phase>
                    <goals>
                        <goal>compress</goal>
                    </goals>
                    <configuration>
                        <nosuffix>true</nosuffix>
                        <linebreakpos>-1</linebreakpos>
                        <aggregations>
                            <aggregation>
                                <removeIncluded>true</removeIncluded>
                                <insertNewLine>false</insertNewLine>
                                <output>${project.build.directory}/${project.build.finalName}/all.js</output>
                                <includes>
                                    <include>**/*.js</include>
                                </includes>
                                <excludes>
                                    <exclude>**/include/*.js</exclude>
                                </excludes>
                            </aggregation>
                        </aggregations>
                    </configuration>
                </execution>
            </executions>
        </plugin>

、同じ js ファイルをファイル allForDev.js に縮小または難読化せずに集約したいと考えています。目標は、開発用に 1 つのファイル、本番用に 1 つのファイルを用意することです。開発者ツールでデバッグするときに、スクリプト全体を表示すると便利です。これを行う方法が見つからない場合、それらすべてのスクリプトをロードするために多くのスクリプトタグを配置する必要があります(これは世界の終わりではありません:)が、よりクリーンな方法でそれを行いたいと思います)。

アセンブル プラグインには次の形式があることがわかります。

zip tar.gz tar.bz2 jar dir war および ArchiveManager が構成されているその他の形式

これを行うために assemble maven プラグインを使用する方法はありますか? 私が見た限り、zips jar と war を作成するための例がたくさんありましたが、私がやりたいことと一致するものはありませんでした。それとも私は何かを逃しましたか?

使用できる別のプラグインはありますか?

余談ですが、yui プラグインの 2 回目の実行を使用して 2 つ目の js ファイルを作成しようとしましたが、2 つのファイルを作成できませんでした。また、2 つの yui プラグインを提供しようとしましたが、再びうまくいきませんでした。それもありえないと思います。

乾杯、
デスポット

4

2 に答える 2

0

答えは wo4j ライブラリにあります。より正確な設定については、次を参照してください。

圧縮、縮小などを行わずに Maven ビルドで結合する Javascript および CSS ファイル

于 2013-01-04T09:22:58.497 に答える
0

私のようにwro4jプラグインを使いたくない場合(@despotの回答から)、すぐにプロトタイプを作成したい場合は、実際にmaven-antrun-pluginは次のように同様の構成で古いものを使用できます。

<plugin>
    <artifactId>maven-antrun-plugin</artifactId>
    <version>1.8</version>
    <executions>
        <execution>
            <phase>generate-sources</phase>
            <configuration>
                <target>
                    <property name="root" location=""/>
                    <property name="jsRoot" location="${root}/src/main/webapp/js"/>
                    <property name="jsAggregated" location="${root}/src/main/webapp/all.js"/>
                    <echo message="Aggregating js files from ${jsRoot} into ${jsAggregated}"/>
                    <concat destfile="${jsAggregated}" encoding="UTF-8" >
                        <fileset dir="${jsRoot}" includes="*.*"/>
                        <filelist dir="${jsRoot}/.." files="client.js"/>
                    </concat>
                </target>
            </configuration>
            <goals>
                <goal>run</goal>
            </goals>
        </execution>
    </executions>
</plugin>

これは、フォルダー内のすべてのファイルを連結します<module>/src/main/webapp/js/*.*(ただし、サブフォルダーのファイルは連結しません)。次に、最後に追加client.jsして、すべてのものを利用できるようにします(AFAIK<fileset>には未定義の順序があります)。

連結された結果のファイルは、<module>/src/main/webapp/all.js.

Maven フェーズ、パス、およびその他のものが「正しくない」可能性があることは知っています。これは、代替の非侵襲的な方法を示す簡単な例にすぎません。

于 2016-12-19T20:50:18.297 に答える