Почему профиль обязателен для приобретения архетипов в нецентральных репозиториях? - PullRequest
0 голосов
/ 03 июля 2018

Я использую Maven 3.2.1 и maven-archetype-plugin 3.0.1 в Windows 10.

Я развернул архетип в своем хранилище и определил его в 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 голосов
/ 03 июля 2018

Работает как положено, профиль для конкретной ситуации, иногда для настроек, которые подходят. Вполне разумно ожидать выбора профиля или определить профиль по умолчанию.

Самый простой способ - активировать определенный профиль с помощью глобального или личного файла 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>
...