如何像过去那样运行Maven

时间:2014-01-10 10:19:50

标签: java maven date dependencies

是否可以像在另一个日期一样运行Maven?

我的问题是我有一个pom在一个月前使用了大量的“RELEASE”版本,但现在包中的一些更改使我的项目无法运行(某些功能的支持已经停止)。不幸的是,这种依赖性非常多,我不知道他们当时的版本,有没有办法运行maven并告诉他们下载截至指定日期为“RELEASE”版本的软件包?

我正在编辑因为我觉得我的问题解释得不好。

假设我的pom.xml

中有以下依赖项
    <dependency>
        <groupId>commons-io</groupId>
        <artifactId>commons-io</artifactId>
        <version>RELEASE</version>
    </dependency>

如果我今天运行“mvn something”,它将获取commons-io 2.4但是如果我两年前运行它会获取commons-io 2.2

我想运行maven并告诉他在过去的某个时间取回包的RELEASE版本。

3 个答案:

答案 0 :(得分:1)

不,在过去的特定时间,无法解析“仿佛”版本,因此,使用显式版本而不是LATESTRELEASE几乎总是优先考虑。

如果您有特定的日期,可以查看中心(例如for commons-io)并查看在该日期之前部署的最新版本。然后,您需要编辑您的pom以使用该版本。

Central有一个API(例如those same commons-io results as JSON),可以自动执行此操作。

答案 1 :(得分:0)

对于maven来说,这可能无法按照特定日期恢复pom文件,我认为要克服此类问题并使用SVNGIT来获得更多优势。< / p>

Maven只是一个构建工具,它不像或提供任何版本控制功能,或者可以跟踪依赖项的变化。

答案 2 :(得分:0)

我不太了解maven,我不确定这会有效,但它可能会给你一些想法:

1:备份您的pom.xml文件(如果以下操作不起作用,您可以恢复)
2:删除pom.xml文件中的所有dependancy标记 3:只插入主要jar文件的主要依赖标签(例如:hibernate或spring)(而不是其他),并在标签中指定它们的(旧)版本。
4:编译。
5:我相信maven会下载那些hibernate和spring需要的任何支持jar文件(例如commons-io)的相应版本。
6:在转到他们的网页并查看过去需要的版本之后,对任何其他主要jar文件重复步骤3到5。