【问题标题】:How to automatically update selenium version in POM?如何在 POM 中自动更新 selenium 版本?
【发布时间】:2018-01-21 11:37:54
【问题描述】:

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

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

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

有什么解决方法吗?

【问题讨论】:

标签: java maven selenium-webdriver intellij-idea


【解决方案1】:

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

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

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

您最好将版本定义为 3.8.1,如果将来您需要升级(版本 3.9.x... 版本 4.x...),只需更改 &lt;property&gt; 和重建。

如果多个项目使用 selenium,您可以将 &lt;property&gt; 放在他们都定义为父级的父级 pom 中。

【讨论】:

    【解决方案2】:

    如果你想自动更新以下依赖的&lt;version&gt;属性:

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

    您可以在Versions Maven Pluginversions:update-property 中使用newVersion 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>
      

    【讨论】:

      【解决方案3】:

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

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

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

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2015-09-24
        • 2015-04-01
        • 1970-01-01
        • 2021-01-01
        • 2021-07-01
        • 1970-01-01
        • 2019-03-10
        • 2013-10-02
        相关资源
        最近更新 更多