问题描述
我正在尝试在本地存储库中安装原型,但是在更新版本并基于该原型生成应用程序时,它没有让我选择以前的版本,这迫使我始终使用最后安装的版本。
这是我的原型项目的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 (将#修改为@)