我有一个POM文件,其中一个依赖于Freemarker.jar。在库文件夹中有freemarker jar的几个版本。我想知道是否有更简单的方法来更新使用哪个freemarker jar而无需打开pom并更改jar的名称或必须找到jar并手动重命名它。具有不同freemarker jar的JComboBox将是最好的,但我不知道如何在运行时更改它。只要我所要做的就是更改组合框的选择并重新启动,我就可以重新启动应用程序。
我已经阅读了一些类似的问题,我相信这可能是不可能的。
这是我的依赖:
<dependency>
<groupId>org.freemarker</groupId>
<artifactId>freemarker</artifactId>
<version>2.3.19</version>
</dependency>
答案 0 :(得分:2)
您可以使用exec-maven-plugin与maven中的依赖关系管理一起启动应用程序。必须可以通过命令行覆盖freemarker依赖项的版本。为此,您可以使用maven属性。
然后,您的用户可以通过命令行参数选择不同的freemarker版本来重新启动应用程序。
例如:
mvn exec:java -D=freemarker.version=2.3.19
但有3个限制:
如果你尝试这个解决方案,你应该从2个非常接近的freemarker版本开始,例如2.3.19。 2.3.18并尝试兼容。
步骤1:将自由标记依赖项添加到依赖关系管理。
<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
答案 1 :(得分:0)
我认为你不能使用maven,因为maven(通常)在运行时没有使用,只在编译/构建期间使用。您可以将依赖项的范围更改为“已提供”,然后调整用于启动应用程序的机制,将正确的jar添加到类路径中。但是,有关如何运行应用程序的更多详细信息,很难提供更多详细信息。
编辑:改为正确的范围。