Почему Maven не всегда загружает последнюю зависимость с артефакта, созданного из бамбука? - PullRequest
1 голос
/ 13 декабря 2011

Я использую бамбук для автоматической сборки наших модулей и maven для инструмента сборки. Это работает правильно, но иногда, если мне нужно увеличить версию модуля (например, с 1.0-SNAPSHOT изменить на 1.1-SNAPSHOT)

Я делаю следующие вещи: 1) пометьте версию 1.0-SNAPSHOT в моем хранилище svn в той же структуре каталога, но в корневом каталоге тегов. Это сделано для совместимости. 2) Создайте план сборки бамбука, который строит помеченный модуль. 3) Увеличьте версию модуля, которая находится в багажнике.

Пока все хорошо. Но иногда, когда я собираю проект моего клиента, помеченный модуль не загружается из maven (даже я вижу, что он правильно построен из бамбука), и он использует старый jar перед тегом. Кроме того, maven не всегда загружает последний jar-файл, и мне нужно пойти и вручную удалить его из каталога .m2 или обновить модуль и пересобрать его вручную на моей машине (автономный режим не используется). Это задница, но как разработчик я могу это сделать, но наши проекты также построены из администраторов, которые не знают, как управлять этим, и они иногда разворачивают проекты с неправильными зависимостями, что приводит к неприятностям:).

Так что, если кто-то знает, как это исправить, дайте мне знать.

Ответы [ 2 ]

2 голосов
/ 02 февраля 2012

Попробуйте mvn deploy -U при создании клиентского приложения, которое зависит от этого модуля. -U Аргумент используется для получения последних построенных зависимостей SNAPSHOT (это не относится к последней версии, но к последнему встроенному артефакту SNAPSHOT) при построении зависимого проекта, который в вашем случае, вероятно, является клиентским приложением.

2 голосов
/ 13 декабря 2011

Посмотрите на файл settings.xml.Вы найдете раздел, подобный следующему:

    <profile>
      <id>FooBar</id>
      <!--Enable snapshots for the built in central repo to direct -->
      <!--all requests to nexus via the mirror -->
      <repositories>
        <repository>
          <id>nexus</id>  
          <!-- use a bogus URL as this gets overwritten by the mirror settings -->
          <url>http://central</url>
         <releases>
            <enabled>true</enabled>
             <updatePolicy>daily</updatePolicy>
         </releases>
          <snapshots>
            <enabled>true</enabled>
             <updatePolicy>always</updatePolicy>
         </snapshots>
        </repository>
      </repositories>
      <pluginRepositories>
        <pluginRepository>
          <id>nexus</id>
          <!-- use a bogus URL as this gets overwritten by the mirror settings -->
          <url>http://central</url>
          <releases>
            <enabled>true</enabled>
            <updatePolicy>daily</updatePolicy>
          </releases>
          <snapshots>
            <enabled>true</enabled>
            <updatePolicy>daily</updatePolicy>
          </snapshots>
        </pluginRepository>
      </pluginRepositories>
    </profile>
  </profiles>
  <activeProfiles>
    <!--make the profile active all the time -->
    <activeProfile>FooBar</activeProfile>
  </activeProfiles>

Убедитесь, что вы используете <updatePolicy>always</updatePolicy> везде, где хотите загружать артефакты каждый раз вместо использования локальных.

...