yuicompressor maven不工作

时间:2017-04-24 11:31:19

标签: maven pom.xml minify yui-compressor

我正在使用maven build在Spring启动Web应用程序中工作。我想压缩所有的js& css文件。我选择了YUI压缩。当我构建我的应用程序时,yui压缩没有发生。我正在收到所有js&的消息。 css文件。

[INFO]无事可做,** css \ base.css比原版更年轻,使用' force'选择或清理目标

我缺少什么?

这是我的pom.xml

<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
      xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
      <modelVersion>4.0.0</modelVersion>

      <groupId>MyApp</groupId>
      <artifactId>MyApp</artifactId>
      <version>0.0.1</version>
      <packaging>war</packaging>
    <!--   <url>http://maven.apache.org</url> -->

        <properties>
            <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
        </properties>

        <parent>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-parent</artifactId>
            <version>1.4.2.RELEASE</version>
        </parent>

        <dependencies>
            my dependencies
        </dependencies>
        <build>
            <plugins>
                <plugin>
                    <artifactId>maven-compiler-plugin</artifactId>
                    <version>3.3</version>
                    <configuration>
                        <source>1.8</source>
                        <target>1.8</target>
                    </configuration>
                </plugin>

                <plugin>
                    <groupId>org.springframework.boot</groupId>
                    <artifactId>spring-boot-maven-plugin</artifactId>
                    <configuration>
                        <executable>true</executable>
                    </configuration>
                </plugin>
                <plugin>
                    <groupId>net.alchim31.maven</groupId>
                    <artifactId>yuicompressor-maven-plugin</artifactId>
                    <version>1.5.1</version>
                    <executions>
                      <execution>
                        <goals>
                          <goal>compress</goal>
                        </goals>
                      </execution>
                    </executions>        
                    <configuration>
                      <nosuffix>true</nosuffix>
                    </configuration>
                  </plugin> 
            </plugins>
        </build>
    </project>

项目结构:enter image description here

3 个答案:

答案 0 :(得分:2)

这不是错误,并且按预期工作。仅当缩小版本不存在或源文件已更改时,插件才会创建资源的缩小版本。当插件发现缩小版本的创建时间晚于源文件时,它不会进行缩小并假设没有任何操作。

如您所见,消息建议您使用force选项(在这种情况下,将始终生成缩小版本但速度较慢)或清除目标(执行mvn clean以删除所有生成的文件,这样它们将再次生成。)

<强>更新:

我能够重现这个问题。这是因为yuicompressor-maven-plugin正在maven-resource-plugin之后执行。前者被复制了从src/main/resourcestarget目录的所有文件,当yuicompressor被执行时,它发现文件已经在这里(当然没有缩小)并显示此消息。

要解决此问题,首先,我们需要配置资源插件以排除资源:

<build>
    <resources>
        <resource>
            <directory>${basedir}/src/main/resources/public</directory>
            <excludes>
                <exclude>*.js</exclude>
                <exclude>*/*.js</exclude>
            </excludes>
        </resource>
    </resources>
</build>

但它没有解决它,因为之后我发现yuicompressor不处理这些文件。这是因为插件正在查找错误的目录,我们还必须对其进行配置:

<plugin>
    <groupId>net.alchim31.maven</groupId>
    <artifactId>yuicompressor-maven-plugin</artifactId>
    <version>1.5.1</version>
    ...
    <configuration>
        <nosuffix>true</nosuffix>
        <sourceDirectory>src/main/resources/public</sourceDirectory>
    </configuration>
</plugin>

答案 1 :(得分:0)

使用-Dmaven.clean.failOnError=false来执行mvn命令。 示例:mvn clean -Dmaven.clean.failOnError=false

答案 2 :(得分:0)

只需添加 Force 选项,我就解决了这个问题:

        <plugin>
            <groupId>net.alchim31.maven</groupId>
            <artifactId>yuicompressor-maven-plugin</artifactId>
            <version>1.5.1</version>
            <executions>
                <execution>
                    <goals>
                        <goal>compress</goal>
                    </goals>
                </execution>
            </executions>
            <configuration>
                <nosuffix>true</nosuffix>

                <force>true</force>

                <sourceDirectory>src/main/resources/static</sourceDirectory>
                <outputDirectory>${project.build.directory}/classes</outputDirectory>
               
                <excludes>
                    <exclude>**/*.min.js</exclude>
                    <exclude>**/*.min.css</exclude>
                </excludes>
            </configuration>
        </plugin>