gpt4 book ai didi

java - 多个实体 jar 与增量构建

转载 作者:太空宇宙 更新时间:2023-11-04 09:12:15 24 4
gpt4 key购买 nike

我通过动态 Maven Artifact 提供实体 jar。在数据库架构更改期间,实体 jar 会生成新版本,没什么大不了的。因此,在项目的 pom.xml 中,我更改了版本

<artifactId>rm</artifactId>
<version>2019.12.25.09.18.12</version>

<artifactId>rm</artifactId>
<version>2019.12.31.10.13.41</version>

然后我调用mvn tomcat:run

我期望的是使用更改后的实体有一个干净的开始。不幸的是,这两个实体版本都是 web 应用程序类路径的一部分。请参阅此屏幕截图:

enter image description here

旧版本的 jar 会首先加载,并且在 Web 应用程序中具有更高的优先级。不使用新实体。

有什么建议吗?

最佳答案

Maven 将缓存从存储库获取 Artifact 的结果并将其放置在 ~/.m2/repository 文件夹中。如果您在本地构建而没有间歇性清理,则您的目标文件夹还将包含旧版本和新版本的库。第一个出现在类路径中的版本基于字典顺序,并且给定您使用的版本格式,旧版本总是出现在新版本之前。

正如 @karthikeyan-vaithilingam 建议的那样,在执行任何操作之前执行清理,以便从已知状态开始。使用 clean 没有任何问题,并且假设任何自动构建过程都将从空目标文件夹开始。

从未知状态开始会产生问题,导致无法在另一种环境中重现该问题(即,它在我的机器上运行),从而使查找和纠正问题变得更加困难。

如果您的代码同时需要旧版本和新版本的定义。您应该考虑如何管理您的依赖关系。您可以将它们打包在同一个 Artifact 中,也可以在 POM 中声明单独的依赖项。无论哪种情况,它们都应该存在于单独的 Java 包中,以便您可以拥有适用于实体的两个版本的代码。

关于java - 多个实体 jar 与增量构建,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59543079/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com