在maven构建中集成yahoo smush.it以进行图像压缩

时间:2014-05-21 08:55:54

标签: java maven automation yahoo image-compression

我想在maven构建中集成Yahoo smush.it,以便在构建中自动化图像压缩。

任何人都可以帮我这样做吗?

我也对其他图书馆开放。 [后端是Java。]

1 个答案:

答案 0 :(得分:2)

您是否考虑过编写一个小型Maven插件来自动执行此操作?插件API非常棒,非常简单 - 您可以查看here。基本上,您将创建一个插件项目,该项目接受一些XML参数并为您执行转换:

@Mojo(name = "compress", defaultPhase = "compile")
public class SmushItCompressMojo extends AbstractMojo {

    @Parameter(property = "images")
    String[] images;

    @Parameter(property = "destination") 
    String destination;

    @Override
    public void execute() throws MojoExecutionException, MojoFailureException {
        // Validate your inputs.
        // For each image file:
            // Compress it using a request to smush.it.
            // Save the compressed image to the destination file.
        // Report any errors/success.
    }
}

然后,在希望使用新编写的mojo的pom.xml中,在<plugins>下的<build>标记中使用以下内容:

<plugin>
    <groupId>com.stackoverflow</groupId>
    <artifactId>smush-it-maven-plugin</artifactId>
    <version>1.0.0-SNAPSHOT</version>
    <executions>
        <execution>
            <id>compress</id>
            <goals>
                <goal>compress</goal>
            </goal>
            <configuration>
                <images>
                    <image>${project.build.directory}/../images/1.png</image>
                    <image>${project.build.directory}/../images/2.png</image>
                    <image>${project.build.directory}/../images/3.png</image>
                </images>
                <destination>${project.build.directory}/../src/main/resources/compressed/
            </configuration>
        </execution>
    </executions>
</plugin>

然后,您可以将三个图像保存到压缩资源文件夹中,然后将在以后的生命周期阶段打包。显然,这里有很多灵活性来确定图像来自哪里并得到保存。但是mojo本身非常简单,这正是您使用Maven自动执行特定于应用程序的任务的方法。