【问题标题】:mvn archetype:generate which version selectedmvn archetype:生成选择的版本
【发布时间】:2019-05-01 13:39:14
【问题描述】:

根据doc<archetypeVersion>没有默认值。

因此,当我执行 mvn archetype:generate 并选择一个原型时,存储库中可能存在它的许多版本。哪个会被选中?

例子:

在存储库 - https://nexus.opendaylight.org/content/repositories/opendaylight.snapshot/archetype-catalog.xml 中,基本上有 2 个原型,每个原型有 2 个版本。

【问题讨论】:

    标签: java maven maven-3 maven-archetype


    【解决方案1】:

    在您的元数据中,您应该能够指定发布版本,这是快速入门中的示例:

    cat /cygdrive/c/Users/G01103266/.m2/repository/org/apache/maven/archetypes/maven-archetype-quickstart/maven-metadata-central.xml
    <?xml version="1.0" encoding="UTF-8"?>
    <metadata>
      <groupId>org.apache.maven.archetypes</groupId>
      <artifactId>maven-archetype-quickstart</artifactId>
      <versioning>
        <latest>1.4</latest>
        <release>1.4</release>
        <versions>
          <version>1.0-alpha-1</version>
          <version>1.0-alpha-2</version>
          <version>1.0-alpha-3</version>
          <version>1.0-alpha-4</version>
          <version>1.0</version>
          <version>1.1</version>
          <version>1.3</version>
          <version>1.4</version>
        </versions>
        <lastUpdated>20181213005348</lastUpdated>
      </versioning>
    </metadata>
    

    在您的本地存储库或 Nexus/Artifactory 中,您可能有一个 archetype-catalog.xml,这将定义允许的版本,供您选择,here 是 Maven Central 的版本。

    如果目录中没有提及原型,则版本将默认为 1.0。

    如果有多个版本,它会要求您选择一个版本并默认发布。

    我使用以下脚本创建测试项目

    mvn archetype:generate -DarchetypeGroupId=org.apache.maven.archetypes -DarchetypeArtifactId=maven-archetype-quickstart -DarchetypeVersion=RELEASE
    

    将使用 1.4 版

    【讨论】:

    • 所以,你是说无论我选择什么原型(不一定是快速启动),我都需要查看&lt;release&gt;(在其相应的 maven-metadata-central.xml 中)那里提到了哪个版本?但是在那个 maven 需要决定它必须下载哪个原型工件之前?下载前不需要版本吗?还是全部下载?
    • 但是您正在传递版本参数。我只是运行mvn archetype:generate。那么现在会发生什么呢?
    • 我也查过了。您更新的第一部分是正确的。但是,如果目录中不存在工件,那么我看到的是,它正在搜索版本 1.0 的原型。你能验证一次吗?在我们的工件版本 1.0 中不存在并且它失败了。 (虽然这不是问题。我们知道要保留哪个版本)
    • @BreakingBenjamin 是的,我用不在我本地目录中的 maven-archetype-webapp 进行了测试,将为其他人更新答案。
    • 感谢更新。我有一个疑问。你提到it asks you to pick a version, the default will be release,什么时候会发生? archetype is not mentioned 是什么意思。提到哪里?如果目录中没有提到,那么它将是 1.0,就像你提到的那样。那么,默认何时发布?如果可能的话,请把场景简单点,以便我们更容易掌握。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2019-07-04
    • 2018-11-23
    • 1970-01-01
    • 2013-03-08
    • 1970-01-01
    • 2010-11-08
    • 2023-03-11
    相关资源
    最近更新 更多