【问题标题】:How to bind SASS plugin goal to tomcat7 deploy phase (maven)如何将 SASS 插件目标绑定到 tomcat7 部署阶段(maven)
【发布时间】:2014-11-09 19:22:53
【问题描述】:

我正在开发一个在 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>

提前感谢您的帮助。

【问题讨论】:

  • 正确的阶段大概是generate-resources。
  • pre-package 可能也值得一看。
  • 至于 Eclipse 映射,我用谷歌搜索了这个 - code.google.com/a/eclipselabs.org/p/m2e-jasig-sass-connector。还有一个示例项目 - code.google.com/a/eclipselabs.org/p/m2e-jasig-sass-connector/… 。而且您可能应该坚持使用默认的阶段绑定 (process-sources)。
  • 无论如何,无论在哪个阶段,update-stylesheets 都不会被调用。 generate-resources 是我的第一选择,但由于 package 是 tomcat7 插件文档中唯一提到的,所以我试了一下。目前正在为“预打包”构建。
  • 该死的,阅读。您已经在插件管理部分配置了这些东西。请移动执行并将其绑定到 build 部分(即,从 pluginManagement 的 plugins 部分到 build 的 plugins 部分)。

标签: java eclipse maven tomcat sass


【解决方案1】:

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-04-28
    • 1970-01-01
    • 1970-01-01
    • 2012-10-26
    • 1970-01-01
    • 2015-11-05
    • 1970-01-01
    • 2012-10-26
    相关资源
    最近更新 更多