为什么在非中央存储库中获取原型必须使用配置文件?
Why is a profile mandatory for acquiring archetypes in non-Central repositories?
我在 Windows 10.
上使用 Maven 3.2.1 和 maven-archetype-plugin 3.0.1
我将 archetype 部署到我的存储库并在 settings.xml
中定义了它,但是找不到 archetype。
<repositories>
<repository>
<id>archetype</id>
<url>https://mydomain/repos</url>
</repository>
</repositories>
执行结果如下
DOS> mvn archetype:generate \
-DarchetypeGroupId=my.sample \
-DarchetypeArtifactId=some-archetype \
-DarchetypeVersion=1.0.0 -DgroupId=sample \
-DartifactId=sampleartifact -Dversion=1.0.0
[ERROR] Failed to execute goal org.apache.maven.plugins:maven-archetype-plugin:3.0.1:generate (default-cli) on project standalone-pom: The desired archetype does not exist (my.sample:some-archetype:1.0.0) -> [Help 1]
org.apache.maven.lifecycle.LifecycleExecutionException: Failed to execute goal org.apache.maven.plugins:maven-archetype-plugin:3.0.1:generate (default-cli) on project standalone-pom: The desired archetype does not exist (my.sample:some-archetype:1.0.0)
但是,指定配置文件工作正常。
<profiles>
<profile>
<id>myprofile</id>
<repositories>
<repository>
<id>archetype</id>
<url>https://mydomain/repos</url>
</repository>
</repositories>
</profile>
</profiles>
只有添加“-P myprofile”才能按预期工作。
DOS> mvn archetype:generate \
...
-P myprofile
我一直想为我的存储库设置优先级,但我是否必须每次都指定一个配置文件?
它按预期工作,配置文件适用于特定情况,适用于有时合适的设置。期望选择配置文件或定义默认配置文件是完全合理的。
最简单的方法是使用全局或您的个人 setting.xml 文件激活特定配置文件以添加以下内容。
<activeProfiles>
<activeProfile>profile-name</activeProfile>
</activeProfiles>
或者,您可以将任何配置文件默认标记为活动
<profiles>
<profile>
<activation>
<activeByDefault>true</activeByDefault>
</activation>
<profile>
<profiles>
或者,您可以将特定配置文件标记为活动。
<profiles>
<profile>
<activation>
<property>
<name>env</name>
<value>dev</value>
</property>
</activation>
...
</profile>
</profiles>
我在 Windows 10.
上使用 Maven 3.2.1 和 maven-archetype-plugin 3.0.1我将 archetype 部署到我的存储库并在 settings.xml
中定义了它,但是找不到 archetype。
<repositories>
<repository>
<id>archetype</id>
<url>https://mydomain/repos</url>
</repository>
</repositories>
执行结果如下
DOS> mvn archetype:generate \
-DarchetypeGroupId=my.sample \
-DarchetypeArtifactId=some-archetype \
-DarchetypeVersion=1.0.0 -DgroupId=sample \
-DartifactId=sampleartifact -Dversion=1.0.0
[ERROR] Failed to execute goal org.apache.maven.plugins:maven-archetype-plugin:3.0.1:generate (default-cli) on project standalone-pom: The desired archetype does not exist (my.sample:some-archetype:1.0.0) -> [Help 1]
org.apache.maven.lifecycle.LifecycleExecutionException: Failed to execute goal org.apache.maven.plugins:maven-archetype-plugin:3.0.1:generate (default-cli) on project standalone-pom: The desired archetype does not exist (my.sample:some-archetype:1.0.0)
但是,指定配置文件工作正常。
<profiles>
<profile>
<id>myprofile</id>
<repositories>
<repository>
<id>archetype</id>
<url>https://mydomain/repos</url>
</repository>
</repositories>
</profile>
</profiles>
只有添加“-P myprofile”才能按预期工作。
DOS> mvn archetype:generate \
...
-P myprofile
我一直想为我的存储库设置优先级,但我是否必须每次都指定一个配置文件?
它按预期工作,配置文件适用于特定情况,适用于有时合适的设置。期望选择配置文件或定义默认配置文件是完全合理的。
最简单的方法是使用全局或您的个人 setting.xml 文件激活特定配置文件以添加以下内容。
<activeProfiles>
<activeProfile>profile-name</activeProfile>
</activeProfiles>
或者,您可以将任何配置文件默认标记为活动
<profiles>
<profile>
<activation>
<activeByDefault>true</activeByDefault>
</activation>
<profile>
<profiles>
或者,您可以将特定配置文件标记为活动。
<profiles>
<profile>
<activation>
<property>
<name>env</name>
<value>dev</value>
</property>
</activation>
...
</profile>
</profiles>