在Maven中,依赖关系通常是这样设置的:
<dependency>
<groupId>wonderful-inc</groupId>
<artifactId>dream-library</artifactId>
<version>1.2.3</version>
</dependency>
现在,如果您使用的是频繁发布的库,那么不断更新<version>标记可能会有些烦人。有没有办法告诉Maven始终使用最新的可用版本(来自存储库)?
在Maven中,依赖关系通常是这样设置的:
<dependency>
<groupId>wonderful-inc</groupId>
<artifactId>dream-library</artifactId>
<version>1.2.3</version>
</dependency>
现在,如果您使用的是频繁发布的库,那么不断更新<version>标记可能会有些烦人。有没有办法告诉Maven始终使用最新的可用版本(来自存储库)?
当前回答
使用过最新快照的用户,请确保您有-U,否则将无法获取最新快照。
mvn -U dependency:copy -Dartifact=com.foo:my-foo:LATEST
// pull the latest snapshot for my-foo from all repositories
其他回答
您是否可能依赖于在开发过程中明显变化很大的开发版本?
不增加开发版本的版本,您可以只使用快照版本,在必要时覆盖快照版本,这意味着您不必在每次微小更改时更改版本标记。类似于1.0-SNAPSHOT。。。
但也许你正在尝试实现其他目标;)
我在maven 3.5.4中的解决方案,在eclipse中使用nexus:
<dependency>
<groupId>yilin.sheng</groupId>
<artifactId>webspherecore</artifactId>
<version>LATEST</version>
</dependency>
然后在eclipse:atl+F5中,选择快照/发布的强制更新
这对我有用。
事实是,即使在3.x中,它仍然有效,令人惊讶的是项目的构建和部署。但是LATEST/REEASE关键字在m2e和eclipse中引起了问题,同时项目也依赖于通过LATEST/RERELEASE部署的依赖性,无法识别版本。
如果您试图将版本定义为属性,并在其他位置引用它,这也会导致问题。
因此,如果可以的话,结论是使用版本maven插件。
使用过最新快照的用户,请确保您有-U,否则将无法获取最新快照。
mvn -U dependency:copy -Dartifact=com.foo:my-foo:LATEST
// pull the latest snapshot for my-foo from all repositories
有时您不想使用版本范围,因为它们似乎很难解决您的依赖关系,尤其是在持续交付且有大量版本的情况下——主要是在繁重的开发过程中。
一种解决方法是使用版本maven插件。例如,可以声明属性:
<properties>
<myname.version>1.1.1</myname.version>
</properties>
并将版本maven插件添加到pom文件中:
<build>
<plugins>
<plugin>
<groupId>org.codehaus.mojo</groupId>
<artifactId>versions-maven-plugin</artifactId>
<version>2.3</version>
<configuration>
<properties>
<property>
<name>myname.version</name>
<dependencies>
<dependency>
<groupId>group-id</groupId>
<artifactId>artifact-id</artifactId>
<version>latest</version>
</dependency>
</dependencies>
</property>
</properties>
</configuration>
</plugin>
</plugins>
</build>
然后,为了更新依赖关系,您必须执行以下目标:
mvn versions:update-properties validate
如果有比1.1.1更新的版本,它将告诉您:
[INFO] Updated ${myname.version} from 1.1.1 to 1.3.2