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

时间:2018-07-03 08:14:22

标签: maven maven-3 maven-plugin maven-archetype

我在Windows 10上使用Maven 3.2.1和maven-archetype-plugin 3.0.1。

我将原型部署到我的存储库并在settings.xml中定义了原型,但是找不到原型。

<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

我一直想确定存储库的优先级,但是每次都必须指定一个配置文件吗?

1 个答案:

答案 0 :(得分:0)

它按预期工作,配置文件用于特定情况,适用于有时合适的设置。期望选择配置文件或定义默认配置文件是完全合理的。

最简单的方法是使用全局或您个人的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>