为什么在非中央存储库中获取原型必须使用配置文件?

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>