【问题标题】:how to have maven and intellij idea generate resources as part of build如何让 maven 和 intellij idea 生成资源作为构建的一部分
【发布时间】:2017-08-02 18:33:02
【问题描述】:

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

(如果您能告诉我如何从 .svg 资源创建 SWT 图像,我将不胜感激,但这不是实际问题。)

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

我想知道两件事:

  1. 如何将 svg-to-png 转换作为 maven 构建的一部分自动进行,以便在我执行 mvn clean install 时发生完整转换,因此只有实际更改的 .svg 文件才能获得当我做mvn install(没有clean)时转换。

  2. 如何说服 IntelliJ IDEA 也这样做。 (因为在大多数情况下,我希望能够在 IDEA 中直接点击“Build-And-Run”,而无需使用 maven。)

如果生成的.png文件直接进入项目的输出文件夹树中的资源目录而不是源文件夹树下的资源目录,我完全不介意。这实际上会节省“复制资源”步骤,所以会很好。

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

【问题讨论】:

    标签: java maven intellij-idea resources


    【解决方案1】:
    • 创建一个 pom 模块,一个子项目,它生成一个带有 .png 资源的 jar,从 .svg 文件生成。(src/main/svg/... 可能。)
    • 然后在您的 using jar 中添加对该库 jar 的依赖项。
    • 使用 ClassLoader 获取资源。

    这有点不必要的迂回,但形成了一条清晰的生产线。


    一个选项是 maven exec 插件。

    另一种方法是使用 java batik 库作为 svg。

    【讨论】:

    • 我想我理解你的意思,但我仍然完全不清楚如何完成它。因此,您是说我的项目将依赖于一些资源 jar 项目,并且由于 .svg 文件将位于资源 jar 项目的源代码树中,因此更改 .svg 文件将导致该项目的重建。美好的。但是,作为构建 resources-jar 项目的一部分,如何将 .svg 转换为 .png-in-a-jar?
    猜你喜欢
    • 2017-09-24
    • 2015-05-31
    • 1970-01-01
    • 1970-01-01
    • 2021-06-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多