Maven: как развернуть с помощью deploy-file и пользовательского универсала - PullRequest
9 голосов
/ 02 марта 2009

Я пытаюсь использовать настраиваемое расширение maven wagon для развертывания jar в моем собственном хранилище. Могу ли я каким-то образом настроить в файле settings.xml распознавание пользовательской схемы URL, которая будет использоваться с конкретным вагоном, или мне всегда нужно изменять файлы pom, содержащие расширение wagon?


При использовании файла deploy не требуется наличие базового pom или любого другого pom. Settings.xml - единственное место, которое гарантированно там будет, но я не могу понять, как использовать его для определения расширений.

Ответы [ 4 ]

5 голосов
/ 13 мая 2013

Я не знаю, действует ли приведенный выше комментарий Брайана Фокса выше в 2013 году. Но в конце концов мне пришлось создать минимальный файл pom.xml в каталоге, куда я пытался загрузить артефакт включить расширение сборки вагона.

Мне пришлось добавить groupId, artifactId и version в pom.xml, чтобы Maven не жаловался, хотя я предоставил их цели файла deploy в командной строке (я думаю, что файл deploy будет заботиться только о параметрах командной строки, хотя ):

<project xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"><modelVersion>4.0.0</modelVersion>
<groupId>your-groupId</groupId>
<artifactId>your-artifactId</artifactId>
<version>your-version</version>
<build>
  <extensions>
    <extension>
      <groupId>org.apache.maven.wagon</groupId>
      <artifactId>wagon-ssh</artifactId>
      <version>2.4</version>
    </extension>
  </extensions>
</build>
</project>

С этим простым файлом "pom.xml" я мог, наконец, выполнить файл deploy, используя scp в качестве протокола:

mvn deploy:deploy-file -Durl=scp://shell.sourceforge.net:/home/project-web/... -DrepositoryId=repoId -Dfile=my-file.jar -DgroupId=your-groupId -DartifactId=your-artifactId -Dversion=your-version -Dpackaging=jar
5 голосов
/ 06 марта 2009

ОК, хорошо, исправление: вы не можете определить элемент <build> внутри <profile>, определенного в settings.xml. Вы можете активировать профиль в settings.xml, но определите его в base-pom.

Извините, единственный другой способ, которым я мог придумать (вероятно, то, что вы ищете), это скопировать флягу расширения непосредственно под $M2_HOME/lib. Все $M2_HOME/lib/*.jar помещаются в classpath, так что это должно фактически иметь тот же эффект, что и <extension>.

Расширение, тем не менее, лучше, потому что вы можете легче контролировать, какая версия расширения используется (например, через базовую помпу).

ОК, просто попробуйте скопировать jar расширения в

    $M2_HOME/lib
2 голосов
/ 11 мая 2012

Сиддхадев прав, но есть несколько дополнительных вещей ... (Я бы добавил это в комментарии, но у меня недостаточно репутации)

Вы можете хранить ваши JAR-файлы в чистом виде, поместив их под: $ M2_HOME / Библиотека / вн

Вам нужны все зависимости, поэтому сделайте что-то вроде:

  1. cd ~ / .m2 / репозиторий / org / apache / maven / wagon / wagon-ssh-external / 2.2
  2. cp wagon-ssh-external-2.2.jar $ M2_HOME / lib / ext
  3. cp wagon-ssh-external-2.2.pom pom.xml
  4. зависимость mvn: зависимость от копирования -DoutputDirectory = $ M2_HOME / lib / ext
2 голосов
/ 06 марта 2009

Вам необходимо добавить расширение вагона к вашему верхнему уровню pom.xml . В большинстве сред корпоративная среда находится на вершине всех их проектов (лучшая практика), поэтому, как правило, это не слишком болезненно для отдельных разработчиков - они просто наследуются от корпоративного ПОМ.

<build>
  <extensions>
    <extension>
      <groupId>org.apache.maven.wagon</groupId>
      <artifactId>wagon-scm</artifactId>
      <version>1.0-alpha-7-SNAPSHOT</version>
    </extension>
    <extension>
      <groupId>org.apache.maven.scm</groupId>
      <artifactId>maven-scm-manager-plexus</artifactId>
      <version>1.0-beta-3-SNAPSHOT</version>
    </extension>
    <extension>
      <groupId>org.apache.maven.scm</groupId>
      <artifactId>maven-scm-provider-svnexe</artifactId>
      <version>1.0-beta-3-SNAPSHOT</version>
    </extension>
  </extensions>
</build>
<distributionManagement>
  <site>
    <id>my.svn.server</id>
    <url>scm:svn:https://username@svn.apache.org/svn/root/module</url>
  </site>
</distributionManagement>

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

Я считаю, что метод getScmType () регистрирует расширение, но я не уверен на 100%.

/** {@inheritDoc} */
public String getScmType()
{
    return "git";
}

Ссылку на источник провайдера Git можно найти здесь.

...