我想在maven构建中集成Yahoo smush.it,以便在构建中自动化图像压缩。
任何人都可以帮我这样做吗?
我也对其他图书馆开放。 [后端是Java。]
答案 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自动执行特定于应用程序的任务的方法。