使用maven插件在没有压缩的情况下将多个(js)文件聚合/组合成一个(js)文件的最简单方法是什么?

时间:2012-11-08 17:43:05

标签: maven-plugin maven-assembly-plugin yui-compressor

我想将多个js文件聚合/组合成一个,而不使用maven插件缩小或混淆它们。 我已经使用yui插件将一些js文件混淆为一个:

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

现在我希望在文件allForDev.js 中聚合相同的js文件而不进行缩小或混淆。目标是有一个文件用于开发,一个用于生产。在开发人员工具中调试时查看整个脚本会很有用。如果我找不到这样做的方法,我将被迫放置很多脚本标签来加载所有这些scirpts(这不是世界末日:)但我想以更干净的方式做到这一点)。

我可以看到汇编插件具有以下格式:

  

zip tar.gz tar.bz2 jar dir war和任何其他格式的那个   ArchiveManager已配置为

有没有办法可以使用汇编maven插件来做到这一点?我看到的有很多例子可以创建拉链罐子和战争,但没有一个可以匹配我想要的去做。或者我错过了什么?

我可以使用其他插件吗?

作为旁注,我尝试使用yui插件的第二次执行来创建第二个js文件,但我没有运气创建2个文件。我也试过提供2个插件,再没有运气。我认为这也不可能。

干杯,

2 个答案:

答案 0 :(得分:0)

答案在于wro4j库。有关更精确的设置,请参阅:

Javascript and CSS files combining in Maven build WITHOUT compression, minification etc

答案 1 :(得分:0)

如果你不想像我一样麻烦wro4j插件(来自@ despot&#39;答案)并希望快速原型化,你可以实际使用具有类似配置的旧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阶段,路径和其他东西可能不是&#34;正确&#34; - 这只是一个快速示例,显示了替代的非侵入性方法。