Java 如何让maven和intellij idea在构建过程中生成资源

Java 如何让maven和intellij idea在构建过程中生成资源,java,maven,intellij-idea,resources,Java,Maven,Intellij Idea,Resources,在我的java SWT项目中,我有一堆.svg格式的图标,但我不知道如何使用.svg资源创建SWT图像,所以我首先使用ImageMagick将它们转换为.png。.svg文件仍然是源图像:当我想要编辑图标时,我总是编辑.svg文件,而不是.png文件 如果您能告诉我如何从.svg资源创建SWT图像,我将不胜感激,但这不是真正的问题 现在我正在手动启动svg到png的转换:每次我更改一个.svg文件时,我都会运行一个shell脚本,该脚本会反复调用ImageMagick将它们全部转换为.png,并

在我的java SWT项目中,我有一堆.svg格式的图标,但我不知道如何使用.svg资源创建SWT图像,所以我首先使用ImageMagick将它们转换为.png。.svg文件仍然是源图像:当我想要编辑图标时,我总是编辑.svg文件,而不是.png文件

如果您能告诉我如何从.svg资源创建SWT图像,我将不胜感激,但这不是真正的问题

现在我正在手动启动svg到png的转换:每次我更改一个.svg文件时,我都会运行一个shell脚本,该脚本会反复调用ImageMagick将它们全部转换为.png,并将它们存储在正确的resources文件夹中,然后,构建步骤将它们从该文件夹复制到运行的应用程序可以在其中找到它们的输出文件夹

我想知道两件事:

如何将svg到png的转换作为maven构建的一部分进行自动化,以便在我执行mvn clean安装时进行完全转换,并且在我执行mvn安装而不执行clean时,仅转换实际更改的.svg文件

如何说服IntelliJ IDEA也这样做。因为在大多数情况下,我喜欢能够在不打扰maven的情况下直接实现构建并运行IDEA

我完全不介意生成的.png文件是否直接进入项目输出文件夹树中的resources目录,而不是源文件夹树下的resources目录。这实际上可以节省复制资源的步骤,因此这将是一件好事

因此,这个问题本质上是关于自定义编译的:.svg文件可以看作是源文件,.png文件可以看作是二进制输出文件,.ImageMagick可以看作是编译器。这个问题可以重新表述为如何使用maven和b intelliJ的思想为这些工具默认不知道的自定义编译器进行make

创建一个pom模块,这是一个子项目,它使用.svg文件.src/main/svg/…生成一个包含.png资源的jar。。。大概 然后在usingjar中向该库jar添加依赖项。 使用类加载器获取资源。 这有点不必要的迂回,但形成了一条清晰的生产线

一个选择是maven插件


另一种完全不同的方法是使用java batik库进行svg。

我想我理解您的意思,但我仍然不清楚如何实现它。因此,您是说我的项目将依赖于某些资源jar项目,并且由于.svg文件将位于资源jar项目的源代码树中,因此更改.svg文件将导致该项目的重建。好的但是,作为构建resources jar项目的一部分,如何将.svg转换为.png-in-a-jar呢?