You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

部署Vaadin Chart应用至Heroku:如何上传许可证文件至主目录

解决Vaadin Charts许可证文件在Heroku部署时找不到的问题

我来帮你搞定这个部署难题——Heroku的构建环境默认不会包含本地用户主目录里的Vaadin Charts许可证文件,所以编译阶段才会抛出找不到许可证的错误。下面是几个实用的解决方案,按推荐程度排序:

方法1:将许可证文件嵌入项目,通过构建脚本复制到主目录

这是最直接的方式,把许可证文件放到项目中,让Maven在构建时自动复制到Heroku的用户主目录:

  1. 在项目根目录下创建.vaadin文件夹(如果不存在的话),把你的charts.license文件放进去。
  2. 修改pom.xml,添加Maven资源插件配置,让它在构建初始化阶段把许可证文件复制到目标目录:
<build>
    <plugins>
        <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-resources-plugin</artifactId>
            <version>3.3.1</version>
            <executions>
                <execution>
                    <id>copy-charts-license</id>
                    <phase>initialize</phase>
                    <goals>
                        <goal>copy-resources</goal>
                    </goals>
                    <configuration>
                        <outputDirectory>${user.home}/.vaadin</outputDirectory>
                        <resources>
                            <resource>
                                <directory>${project.basedir}/.vaadin</directory>
                                <includes>
                                    <include>charts.license</include>
                                </includes>
                            </resource>
                        </resources>
                    </configuration>
                </execution>
            </executions>
        </plugin>
    </plugins>
</build>
  1. 把.vaadin/charts.license加入版本控制(确保推送到Heroku的代码包含这个文件),然后重新部署即可。

方法2:通过Heroku配置变量存储许可证内容,构建前写入文件

如果不想把许可证文件提交到版本控制(比如担心敏感信息泄露),这个方法更安全:

  1. 打开Heroku仪表盘,进入你的应用,找到Settings -> Config Vars,添加一个新变量:
    • 名称:VAADIN_CHARTS_LICENSE
    • 值:直接粘贴charts.license文件里的全部内容
  2. 在项目根目录创建pre-build.sh脚本,内容如下:
#!/bin/bash
# 创建.vaadin目录(如果不存在)
mkdir -p ~/.vaadin
# 将配置变量的内容写入许可证文件
echo "$VAADIN_CHARTS_LICENSE" > ~/.vaadin/charts.license
  1. 给脚本添加执行权限:chmod +x pre-build.sh(本地执行一次后,把脚本提交到版本控制)
  2. 修改pom.xml,让Maven在构建前执行这个脚本:
<build>
    <plugins>
        <plugin>
            <groupId>org.codehaus.mojo</groupId>
            <artifactId>exec-maven-plugin</artifactId>
            <version>3.1.0</version>
            <executions>
                <execution>
                    <id>run-pre-build-script</id>
                    <phase>initialize</phase>
                    <goals>
                        <goal>exec</goal>
                    </goals>
                    <configuration>
                        <executable>${project.basedir}/pre-build.sh</executable>
                    </configuration>
                </execution>
            </executions>
        </plugin>
    </plugins>
</build>
  1. 提交所有修改并重新部署,Heroku会在编译前自动生成许可证文件。

方法3:使用自定义Buildpack(进阶选项)

如果以上方法不满足你的定制需求,你可以编写自定义Heroku Buildpack,在构建环境初始化时自动配置许可证文件。不过这个方法需要掌握Buildpack的编写逻辑,适合有一定Heroku定制经验的用户。

不管用哪种方法,核心都是让Heroku的构建环境在编译阶段能访问到~/.vaadin/charts.license文件,这样Vaadin Charts的编译插件就能顺利找到许可证了。

内容的提问来源于stack exchange,提问作者masiboo

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.21 06:32:08