如何将SASS插件目标绑定到tomcat7部署阶段(maven)

时间:2014-11-09 10:46:56

标签: java eclipse maven tomcat sass

我正在开发一个在Tomcat7上运行的webapp,并使用maven进行依赖/自动构建。昨天我开始使用sass-maven-plugin,这很棒。它的目标sass:update-stylesheets处理sass文件并输出css。不幸的是,我无法在webapp打包期间执行它。我对maven也很陌生,所以我可能错过了一些东西。这是我的理解:

  • 当我输入mvn tomcat7:deploy时,maven执行tomcat7插件中定义的deploy目标
  • 此插件经历了开发生命周期的某些阶段。更具体地说,如doc中所述,它"在执行之前调用生命周期阶段包的执行。"
  • 如果我将目标sass:update-stylesheets映射到<build><executions/></build>中的包阶段,则应该在每次部署/重新部署我的应用时执行它。

当我独立于tomcat7:deploy运行mvn sass:update-stylesheets时,一切都很顺利。 sass-maven-plugin从src / main / resources获取.scss文件,处理它们并将输出放在src / main / webapp / resources中,我希望将它与我的webapp一起部署。不幸的是,如果我不在tomcat7:deploy之前运行命令,我就不会为我的网页获取任何CSS。我弄错了什么?另外,有什么方法可以将sass:update-stylesheets映射到阶段process-resources,例如哪个更有意义?最后,如果这一切都有效,那么Eclipse的增量构建是否会起作用?

这是我的pom.xml(相关部分)

    ...

    <pluginManagement>
        <plugins>
            <plugin>
                <groupId>org.apache.tomcat.maven</groupId>
                <artifactId>tomcat7-maven-plugin</artifactId>
                <version>2.2</version>
                <configuration>
                    ...
                </configuration>
            </plugin>

            <!-- SASS processing -->
            <plugin>
                <groupId>org.jasig.maven</groupId>
                <artifactId>sass-maven-plugin</artifactId>
                <version>1.1.1</version>
                <executions>
                    <execution>
                        <id>generate-css</id>
                        <phase>package</phase>
                        <goals>
                            <goal>update-stylesheets</goal>
                        </goals>
                    </execution>
                </executions>
                <configuration>
                    <useCompass>true</useCompass>
                    <resources>
                        <resource>
                            <source>
                                <directory>${basedir}/src/main/resources</directory>
                            </source>
                            <destination>${basedir}/src/main/webapp/resources</destination>
                        </resource>
                    </resources>
                </configuration>
            </plugin>


        </plugins>
    </pluginManagement>
</build>

提前感谢您的帮助。

1 个答案:

答案 0 :(得分:1)

您已在插件管理部分配置了这些内容。请移动执行并将其绑定到构建部分(即,从pluginManagement的插件部分到build的插件部分)。