【问题标题】:Automatic update of generated css files via m2e通过 m2e 自动更新生成的 css 文件
【发布时间】:2014-05-07 15:01:43
【问题描述】:

我正在使用lesscss-maven-plugin 生成不同的css 文件到目标目录(target\generated-sources),然后使用maven-war-plugin 将此目录添加为webResouce。这些文件会生成得非常好。

但是,当 m2e 插件(版本 1.0.0)更改时,不会将这些文件复制到相应的网络资源文件夹 (m2e-wtp\web-resources) 中。只有当我运行 Eclipse“maven/update 项目”时,更改才会更新。但是我希望这些更改在文件发生更改时自动生效。这是我的 pom 配置:

<plugin>
<groupId>org.eclipse.m2e</groupId>
<artifactId>lifecycle-mapping</artifactId>
<version>1.0.0</version>
<configuration>
    <lifecycleMappingMetadata>
        <pluginExecutions><pluginExecution>
                <pluginExecutionFilter>
                    <groupId>org.lesscss</groupId>
                    <artifactId>lesscss-maven-plugin</artifactId>
                    <versionRange>[1.3.3]</versionRange>
                    <goals>
                        <goal>compile</goal>
                    </goals>
                </pluginExecutionFilter>
                <action>
                    <execute>
                        <runOnIncremental>true</runOnIncremental>
                        <runOnConfiguration>true</runOnConfiguration>
                    </execute>
                </action>
            </pluginExecution>  
        </pluginExecutions>
    </lifecycleMappingMetadata>
</configuration>

....

<plugin>
    <groupId>org.lesscss</groupId>
    <artifactId>lesscss-maven-plugin</artifactId>
    <version>1.3.3</version>
    <configuration>
        <sourceDirectory>${project.basedir}/src/main/less</sourceDirectory>
        <outputDirectory>${project.build.directory}/generated-sources/styles</outputDirectory>
        <lessJs>${project.basedir}/tools/less/less-1.7.0.min.js</lessJs>
        <includes>
            <include>backend/backend-main.less</include>
            <include>frontend/frontend-main.less</include>
        </includes>
    </configuration>
    <executions>
        <execution>
            <phase>process-resources</phase>
            <goals>
                <goal>compile</goal>
            </goals>
        </execution>
    </executions>
</plugin>

<plugin>
    <groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-war-plugin</artifactId>
    <version>2.4</version>
    <configuration>              
        <webResources>
            <resource>
                <directory>${project.build.directory}/generated-sources/styles</directory>
                <targetPath>styles</targetPath>
            </resource>
        </webResources>
    </configuration>
</plugin>

【问题讨论】:

  • 您是否为项目启用了“自动构建”,或者您已明确运行“构建项目”?
  • @tdrury“自动构建”已启用。 (我代替我的同事回答,因为我们在同一个项目中工作)

标签: eclipse maven less maven-plugin m2eclipse


【解决方案1】:

有两种选择:

使用 m2e 特定配置文件

这与您找到的解决方法类似,但更简洁,因为它仅在 m2e 上激活配置文件,并且您使用属性设置不使用 m2e 打包时的替代值。

您创建一个特定于 m2e 的配置文件,激活后会将文件直接放在 m2e-wtp/web-resources/styles 目录中

<properties>      
    <lesscss.outputDirectory>${project.build.directory}/${project.build.finalName}/styles</lesscss.outputDirectory>
</properties>

<profiles>
    <profile>
        <id>m2e</id>
            <activation>
                <property>
                    <name>m2e.version</name>
                </property>
            </activation>
            <properties>
                <lesscss.outputDirectory>${project.build.directory}/m2e-wtp/web-resources/styles</lesscss.outputDirectory>
            </properties>
    </profile>
</profiles>

<plugin>
    <groupId>org.lesscss</groupId>
    <artifactId>lesscss-maven-plugin</artifactId>
    <version>1.3.3</version>
    <configuration>
        <sourceDirectory>${project.basedir}/src/main/webapp/styles</sourceDirectory>
        <outputDirectory>${lesscss.outputDirectory}</outputDirectory>      
    </configuration>
    <executions>
        <execution>
            <goals>
                 <goal>compile</goal>
            </goals>
            <phase>process-sources</phase>
        </execution>
    </executions>
</plugin>

来源https://github.com/marceloverdijk/lesscss-maven-plugin/issues/8

使用 m2e-wro4j

它承诺:

执行 wro4j-maven-plugin:在 Eclipse 增量构建上运行,如果在 wro4j-maven-plugin 的 contextFolder(默认为 src/main/webapp)下的 css、js、less、json、sass 资源上检测到更改

来源https://github.com/jbosstools/m2e-wro4j

【讨论】:

    【解决方案2】:

    我实际解决方法的想法是通过“手动”修改 target\m2e-wtp 中的 css 文件。

    (首先我尝试使用 maven-resource-plugin 将 css 文件从 target\generated-sources 复制到 target\m2e-wtp,但由于未知原因,即使 maven-resource-plugin 在提交文件时也无法应对target\generated-sources 中的 css 文件已更新。)

    所以我想出了这个解决方案:让lesscss-maven-plugin 生成文件两次,一组给target\generated-sources,第二组给target\m2e-wtp。当然lesscss-maven-plugin只有一个输出文件夹,所以必须运行less:compile目标两次。 (这有点慢,但可以。) 因为仅在 Eclipse 中需要第二组 css 文件,所以我已将第二次执行添加到配置文件中。

        <profile>
            <id>less-eclipse-m2e-workarround</id>
            <!-- 
                problem: Eclipse is not updating m2e-wtp folder when css files in generated-sources get modified
                workarround: generate the css twice: the normal nonce for generated-sources and a second bunch (only
                for eclipse) directly into m2e-wtp folder
                to enable this profile add the profile-id to: project/properties/maven/active maven profiles
                details: http://stackoverflow.com/questions/23521410/automatic-update-of-generated-css-files-via-m2e
            -->
            <build>
                <plugins>
                    <plugin>
                        <groupId>org.lesscss</groupId>
                        <artifactId>lesscss-maven-plugin</artifactId>
                        <executions>
                            <execution>
                                <id>for-eclipse</id>
                                <phase>generate-resources</phase>
                                <goals>
                                    <goal>compile</goal>                            
                                </goals>
                                <configuration>
                                    <outputDirectory>${project.build.directory}/m2e-wtp/web-resources/styles</outputDirectory>
                                </configuration>
                            </execution>
                        </executions>
                    </plugin>
                </plugins>
            </build>
        </profile>
    

    【讨论】:

      猜你喜欢
      • 2020-09-21
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-07-18
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多