如何在POM中自动更新selenium版本?

时间:2018-01-21 11:37:55

标签: java maven selenium-webdriver intellij-idea

有没有办法在POM文件中自动获取selenium-java版本更新到最新版本而无需手动更改?

我尝试创建一个selenium.version变量,可以获取新的selenium更新但我的POM拒绝索引变量并显示为红色

<dependency>
  <groupId>org.seleniumhq.selenium</groupId>
  <artifactId>selenium-java</artifactId>
  <version>${selenium.version}</version>
</dependency>

任何解决方法?

3 个答案:

答案 0 :(得分:2)

如果要自动更新以下依赖项的<version>属性:

<dependency> 
  <groupId>org.seleniumhq.selenium</groupId>
  <artifactId>selenium-java</artifactId>
  <version>3.8.1</version>
</dependency>

您可以使用newVersionversions:update-property内的Versions Maven Plugin parameter,如下所示:

  • 版本1.0(包含)到2.0(不包括):

    <dependency>
      <groupId>org.seleniumhq.selenium</groupId>
      <artifactId>selenium-java</artifactId>
      <version>[1.0,2.0)</version>
    </dependency>
    
  • 版本1.0到2.0(包括两者):

    <dependency>
      <groupId>org.seleniumhq.selenium</groupId>
      <artifactId>selenium-java</artifactId>
      <version>[1.0,2.0]</version>
    </dependency>
    
  • 版本1.5及更高版本:

    <dependency>
      <groupId>org.seleniumhq.selenium</groupId>
      <artifactId>selenium-java</artifactId>
      <version>[1.5,)</version>
    </dependency>
    
  • 最高1.0(包括)和1.2或更高的版本:

    <dependency>
      <groupId>org.seleniumhq.selenium</groupId>
      <artifactId>selenium-java</artifactId>
      <version>(,1.0],[1.2,)</version>
    </dependency>
    
  • 准确使用的版本:

    <dependency>
      <groupId>org.seleniumhq.selenium</groupId>
      <artifactId>selenium-java</artifactId>
      <version>-DnewVersion=[3.8.0]</version>
    </dependency>
    

答案 1 :(得分:2)

老实说,最好的方法是完全按照你的方式做,在pom.xml中定义${selenium.version}的属性,如下所示:

<properties>
    <selenium.version>3.8.1</selenium.version>
</properties>

maven的核心原则是可重复的构建。如果您没有为依赖项提供具体的版本号(即使是像selenium这样的测试依赖项),那么当发布新版本的selenium时,您可能会在一天内突然失败(或者出现其他一些不一致)的风险。

您最好将版本定义为3.8.1,如果将来您看到需要升级(版本3.9.x ...版本4.x ...),只需更改{{ 1}}并重建。

如果多个项目使用selenium,您可以将<property>放在父pom中,并将它们全部定义为父级。

答案 2 :(得分:1)

如果您使用的是Maven 2,则可以使用最新 RELEASE 的版本值。 最新是指特定工件的最新发布或快照版本,即特定存储库中最近部署的工件。 RELEASE 是指存储库中的最后一个非快照版本

   <dependency>             
        <groupId>org.seleniumhq.selenium</groupId>                              
        <artifactId>selenium-java</artifactId>                              
        <version>LATEST</version>                               
    </dependency>

但是,Maven 3.x不再支持在POM中使用这些metaversion。因此,用户需要使用具体版本替换这些metaversion的出现,因为存在由自动插件版本解析强加的不可重现的构建的威胁。

https://cwiki.apache.org/confluence/display/MAVEN/Maven+3.x+Compatibility+Notes#Maven3.xCompatibilityNotes-AutomaticPluginVersionResolution