您可以使用 exec-maven-plugin 与 maven 中的依赖管理一起启动应用程序。freemarker 依赖项的版本必须可以被命令行覆盖。为此,您可以使用 Maven 属性。
然后,您的用户可以通过命令行参数选择使用不同的 freemarker 版本来重新启动应用程序。
例如这样的:
mvn exec:java -D=freemarker.version=2.3.19
但是有3个限制:
- 您的用户需要重新启动应用程序
- 仅当 freemarker 版本与二进制兼容时,此解决方案才有可能
- 如果 freemarker 版本仅与源代码兼容,则您的用户还需要在启动应用程序之前重新编译该应用程序。
如果您尝试此解决方案,您应该从 2 个非常接近的 freemarker 版本开始,例如 2.3.19。2.3.18 并尝试它们是否兼容。
第 1 步:将 freemarker 依赖项添加到依赖项管理中。
<dependencyManagement>
<dependencies>
<dependency>
<groupId>org.freemarker</groupId>
<artifactId>freemarker</artifactId>
<version>${freemarker.version}</version>
</dependency>
</dependencies>
</dependencyManagement>
步骤 2为用户在命令行中未指定的情况添加默认版本属性。
<properties>
<freemarker.version>2.3.19</freemarker.version>
</properties>
步骤 3配置 exec-maven-plugin
<plugin>
<groupId>org.codehaus.mojo</groupId>
<artifactId>exec-maven-plugin</artifactId>
<version>1.2.1</version>
<configuration>
<mainClass>org.your.full.quallified.MainClass/mainClass>
</configuration>
</plugin>
第 4 步尝试使用默认的 freemarker 版本执行它
mvn exec:java
第 5 步尝试使用另一个 freemarker 版本执行它
mvn exec:java -D=freemarker.version=2.3.18