如何让maven yuiccompressor和tomcat插件发挥良好

How to get maven yuicompressor and tomcat plugins to play nice

本文关键字:插件 tomcat maven yuiccompressor      更新时间:2023-09-26

我想压缩我所有的javascript文件和聚合它们使用yuiccompressor,我看到有一个maven插件允许我来做这个。我让它大部分工作。

我也使用Mojo tomcat插件以及。当我去跑Tomcat:运行目标,Tomcat不读取目标的输出目录(这是YUI压缩器放置我的javascript文件的地方)而是从我的"src/main/"中的实际源文件中读取webapp/脚本"目录。当然是聚合的javascript文件(all.js)不存在

我有几个问题。

  1. 我如何让tomcat插件读取目标的输出文件夹yui压缩机插件创建?

  2. 我必须运行yui压缩器maven目标每次我想在开发期间更新我的javascript文件?

  3. 有更好的方法来实现这一点吗?基本上,我的最终目标是能够开发JavaScript和测试我的源文件开发模式,但我想压缩和聚合的文件和当应用程序在生产环境中运行时,使用all.js脚本模式。

虽然Rails的人已经弄清楚了这一点,但这似乎对于Maven和Spring来说,这是一件非常重要的事情。

我将感谢任何和所有的帮助,我如何才能得到这个正确地运行。谢谢!

我只是在调查这个问题,并通过查看插件文档找到了我的答案。

mvn tomcat:run -将当前项目作为动态web应用程序运行

这实际上意味着当嵌入的tomcat运行时,还没有到达包执行阶段。

回答 是用:

mvn tomcat:run-war -将当前项目作为打包的web运行

这允许maven构建打包WAR文件,因此允许 yuiccompressor -maven-plugin在嵌入式tomcat启动之前做它需要做的事情。

由于每次都必须运行它,您应该将yui插件的运行附加到"generate-sources"执行阶段。

将以下内容添加到你的插件中(重要的部分是将"phase"元素附加到生命周期中):

  <plugin>
    <groupId>net.alchim31.maven</groupId>
    <artifactId>yuicompressor-maven-plugin</artifactId>
    <executions>
      <execution>
        <phase>generate-sources</phase>
        <goals>
          <goal>compress</goal>
        </goals>
      </execution>
    </executions>  
    <configuration>...</configuration>      
  </plugin>

这样,插件将在生成源代码阶段运行每个构建。所以,当你改变了java脚本(你已经配置了插件),输出的。js文件将会更新,只要你运行如下命令:

mvn compile
mvn test
mvn install
mvn package

等等


以上确实会导致在生命周期的早期创建最小化(可能是聚合的)文件,但是tomcat:run无法找到它们!