安装Maven原型会覆盖旧版本

问题描述

我正在尝试在本地存储库中安装原型,但是在更新版本并基于该原型生成应用程序时,它没有让我选择以前的版本,这迫使我始终使用最后安装的版本。

这是我的原型项目的pom:

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
  <modelVersion>4.0.0</modelVersion>

  <groupId>com.foo</groupId>
  <artifactId>foo</artifactId>
  <version>1.0.0-SNAPSHOT</version>
  <packaging>maven-archetype</packaging>

  <name>foo</name>

  <build>
    <extensions>
      <extension>
        <groupId>org.apache.maven.archetype</groupId>
        <artifactId>archetype-packaging</artifactId>
        <version>3.2.0</version>
      </extension>
    </extensions>

    <pluginManagement>
      <plugins>
        <plugin>
          <artifactId>maven-archetype-plugin</artifactId>
          <version>3.2.0</version>
        </plugin>
      </plugins>
    </pluginManagement>
  </build>
</project>

我只是运行mvn安装,它会生成原型目录文件:

<?xml version="1.0" encoding="UTF-8"?>
<archetype-catalog xsi:schemaLocation="http://maven.apache.org/plugins/maven-archetype-plugin/archetype-catalog/1.0.0 http://maven.apache.org/xsd/archetype-catalog-1.0.0.xsd"
    xmlns="http://maven.apache.org/plugins/maven-archetype-plugin/archetype-catalog/1.0.0"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
  <archetypes>
    <archetype>
      <groupId>com.foo</groupId>
      <artifactId>foo</artifactId>
      <version>1.0.0-SNAPSHOT</version>
      <description>foo</description>
    </archetype>
  </archetypes>
</archetype-catalog>

如果我将版本提高到1.0.1-SNAPSHOT并再次运行mvn install命令,则原型目录中只会显示最新版本:

<?xml version="1.0" encoding="UTF-8"?>
<archetype-catalog xsi:schemaLocation="http://maven.apache.org/plugins/maven-archetype-plugin/archetype-catalog/1.0.0 http://maven.apache.org/xsd/archetype-catalog-1.0.0.xsd"
    xmlns="http://maven.apache.org/plugins/maven-archetype-plugin/archetype-catalog/1.0.0"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
  <archetypes>
    <archetype>
      <groupId>com.foo</groupId>
      <artifactId>foo</artifactId>
      <version>1.0.1-SNAPSHOT</version>
      <description>foo</description>
    </archetype>
  </archetypes>
</archetype-catalog>

如果我检查了.m2中原型的元数据文件(如果两个版本都出来了):

<?xml version="1.0" encoding="UTF-8"?>
<metadata>
  <groupId>com.foo</groupId>
  <artifactId>foo</artifactId>
  <versioning>
    <versions>
      <version>1.0.0-SNAPSHOT</version>
      <version>1.0.1-SNAPSHOT</version>
    </versions>
    <lastUpdated>20201028190227</lastUpdated>
  </versioning>
</metadata>

如果我尝试使用带有mvn archetype命令的原型来生成应用程序:generate -Dfilter = foo,我可以选择一个选项,但是它将其传递给变量配置,因此我无法选择以前的版本:

mvn archetype:generate -Dfilter=foo
[INFO] Scanning for projects...
[INFO]
[INFO] ----------------------------< com.foo:foo >-----------------------------
[INFO] Building foo 1.0.1-SNAPSHOT
[INFO] --------------------------[ maven-archetype ]---------------------------
[INFO]
[INFO] >>> maven-archetype-plugin:3.2.0:generate (default-cli) > generate-sources @ foo >>>
[INFO]
[INFO] <<< maven-archetype-plugin:3.2.0:generate (default-cli) < generate-sources @ foo <<<
[INFO]
[INFO]
[INFO] --- maven-archetype-plugin:3.2.0:generate (default-cli) @ foo ---
[INFO] Generating project in Interactive mode
[INFO] No archetype defined. Using maven-archetype-quickstart (org.apache.maven.archetypes:maven-archetype-quickstart:1.0)
Choose archetype:
1: local -> com.foo:foo (foo)
Choose a number or apply filter (format: [groupId:]artifactId,case sensitive contains): : 1
Define value for property 'groupId':

我希望能够选择我的原型的先前版本,我知道可以这样做,因为我已经完成了,但是我找不到安装新版本时不再显示先前版本的原因。有什么想法吗?

解决方案:

我已经通过在安装原型后运行这些命令解决了这个问题(以前没有发生过,它会自动更新):

mvn archetype:update-local-catalog
mvn archetype:crawl

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)

相关问答

错误1:Request method ‘DELETE‘ not supported 错误还原:...
错误1:启动docker镜像时报错:Error response from daemon:...
错误1:private field ‘xxx‘ is never assigned 按Alt...
报错如下,通过源不能下载,最后警告pip需升级版本 Requirem...