2015-07-22 105 views
3

我正在使用旧项目,它是一个Vaadin组件,它使用Maven YUI插件来缩小和连接javascript文件。有40个js文件。Maven YUI压缩器,concat但不缩小(关闭压缩)

YUI插件的工作原理是,将40个js文件缩小并将它们连接成一个文件(然后在Vaadin中使用@javascript进行引用)。

由于新功能的缩小开发很痛苦,但我无法删除YUI插件,因为那样我就需要为所有40个js文件添加一个@javascript注释。

有没有办法让YUI聚合,但不是 minify。我已经阅读了文档,并试图改变目标(即仅限于jslint),但如果我不使用compress目标,似乎我无法聚合。

我在这里错过了什么吗?

这里是我的YUI的配置,因为它代表:

<plugin> 
    <groupId>net.alchim31.maven</groupId> 
    <artifactId>yuicompressor-maven-plugin</artifactId> 
    <version>1.5.1</version> 
    <executions> 
    <execution> 
     <id>jslint</id> 
     <goals> 
     <goal>jslint</goal> 
     </goals> 
     <configuration> 
     <includes> 
     <include>**/*.js</include> 
     </includes> 
     <excludes> 
     <exclude>**/VAADIN/js/*.js</exclude> 
     <exclude>**/depends/*.js</exclude> 
     </excludes> 
     </configuration> 
    </execution> 
    <execution> 
    <id>minify</id> 
    <goals> 
    <goal>compress</goal> 
    </goals> 
    <configuration> 
    <nosuffix>true</nosuffix> 
    <force>true</force>  
    <excludeWarSourceDirectory>true</excludeWarSourceDirectory> 
    <linebreakpos>-1</linebreakpos> 
    <aggregations> 
    <aggregation> 
     <inputDir>target/classes/[path]/components</inputDir> 
     <removeIncluded>true</removeIncluded> 
     <output>${project.build.directory}/classes/[path].js</output> 
    <includes> 
     <include>**/*.js</include> 
     <include>**/Copyright.txt</include> 
    </includes> 
    <excludes> 
     <exclude>**/depends/d3_3.4.6.js</exclude> 
    </excludes> 
    </aggregation> 
    </aggregations> 
    <includes> 
    <include>**/*.js</include> 
    <include>**/[project.name].css</include> 
    </includes> 
    <excludes> 
    <exclude>**/depends/*.js</exclude> 
    </excludes> 
    </configuration> 
    </execution> 
    </executions> 
</plugin> 

注:我也尝试了上面的jslint目标中的聚合配置,没有喜悦。 (我知道YUI是一个压缩插件,但它具有其他功能(如lint),所以我假设你可以关闭压缩功能)。此外,Vaadin的@javascript注释采用逗号分隔的js文件列表。我觉得加40会太方便,但也许@javascript有一个方法来建立一个目录。 (文档虽然没有提到这一点)

回答

5

决定对这个问题我发现了一个解决方案,任何人发现它的一方,部分是因为它没有得到任何其他答案。

这个解决方案受到了这个answer的启发,有人问了我需要的东西。 @Mady指出了不同的包括/在插件配置排除

短篇小说长,可以排除所有.js文件在minifyer 包括他们在agreegator:

<execution> 
    <id>minify</id> 
    <goals> 
    <goal>compress</goal> 
    </goals>      
    <configuration> 
    <nosuffix>true</nosuffix> 
    <force>true</force> 
    <excludeWarSourceDirectory>true</excludeWarSourceDirectory> 
    <linebreakpos>-1</linebreakpos> 
    <aggregations> 
     <aggregation> 
     <includes> 
      <include>**/*.js</include> <!-- INCLUDES FOR CONCATENATION --> 
     </includes> 
     </aggregation> 
    </aggregations> 
    <excludes> 
     <exclude>**/*.js</exclude> <!-- EXCLUDE ALL JS FROM MINIFICATION --> 
    </excludes> 
    </configuration> 
</execution>