0

Я хочу настроить развертывание ручного файла в удаленный репозиторий, используя либо репозиторий снимков (используя настроенное свойство project.distributionManagement.snapshotRepository.url), если текущая версия проект представляет собой версию моментального снимка или в репозиторий выпуска (с использованием настроенного свойства project.distributionManagement.repository.url) в противном случае.Использовать репозиторий релиза или моментального снимка для ручного развертывания в зависимости от версии проекта

Я хочу развернуть схему swagger json в репозитории, и я не нашел никакого способа, кроме ручного развертывания.

+1

Пожалуйста, не могли бы вы объяснить, каким образом делает ваши потребности расходятся от стандартного поведения Maven? Потому что мое первое впечатление заключается в том, что стандартное поведение соответствует вашим потребностям. –

+0

Я сделал обновление по причине ручного развертывания. –

+0

Репозиторий выпуска или моментального снимка будет определяться версией, которую вы используете. Это означает, что если вы используете что-то вроде 'XXXX-SNAPSHOT', оно будет развернуто в хранилище снимков, и если вы используете что-то без' -SNAPSHOT', оно будет развернуто для выпуска репозитория ... Поэтому я не понимаю, почему вам нужно делать что-то другое? Ручное развертывание можно выполнить с помощью 'mvn deploy'? – khmarbaise

ответ

1

Существует работа с использованием вспомогательного помощника builder для использования правильного репозитория из конфигурации управления распределением. Он устанавливает свойство с правильным значением. Затем вызывается модуль развертывания maven с целевым файлом развертывания и этим URL-адресом.

<plugin> 
    <groupId>org.codehaus.mojo</groupId> 
    <artifactId>build-helper-maven-plugin</artifactId> 
    <version>1.12</version> 
    <executions> 
     <execution> 
      <phase>deploy</phase> 
      <goals> 
       <goal>bsh-property</goal> 
      </goals> 
      <configuration> 
       <properties> 
        <property>deploy.url</property> 
       </properties> 
       <source>deploy.url = project.getVersion().endsWith("-SNAPSHOT") ? project.getDistributionManagement().getSnapshotRepository().getUrl() : project.getDistributionManagement().getRepository().getUrl() ;</source> 
      </configuration> 
     </execution> 
    </executions> 
</plugin> 
<plugin> 
    <groupId>org.apache.maven.plugins</groupId> 
    <artifactId>maven-deploy-plugin</artifactId> 
    <version>2.8.2</version> 
    <executions> 
     <execution> 
      <phase>deploy</phase> 
      <goals> 
       <goal>deploy-file</goal> 
      </goals> 
      <configuration> 
       <url>${deploy.url}</url> 
       <repositoryId>releases</repositoryId> 
       <file>${swagger.directory}/swagger.json</file> 
       <groupId>${project.groupId}</groupId> 
       <artifactId>${project.artifactId}</artifactId> 
       <version>${project.version}</version> 
       <packaging>json</packaging> 
       <classifier>swagger</classifier> 
      </configuration> 
     </execution> 
    </executions> 
</plugin> 
0

Если ваша потребность развернуть некий артефакт (возможно, JSON текстовый файл), который имеет не соответствующий файл pom.xml поддерживая его, вы можете использовать цель развертывания-файла:

http://maven.apache.org/plugins/maven-deploy-plugin/deploy-file-mojo.html

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

Для того, чтобы развернуть его в нужном месте, в зависимости от версии, я могу предложить вам этот фрагмент муравей сценария мы построили для аналогичной цели:

<condition property="url" value="${snapshots.repo.url}" else="${releases.repo.url}"> 
      <contains string="${project.version}" substring="-SNAPSHOT"/> 
     </condition> 
     <exec executable="cmd"> 
      <arg value="/c"/> 
      <arg value="mvn.bat"/> 
      <arg value="deploy:deploy-file"/> 
      <arg value="-DgroupId=com.myorg.swagger"/> 
      <arg value="-DartifactId=swagger_file"/> 
      <arg value="-Dversion=${project.version}"/> 
      <arg value="-U"/> 
      <arg value="-Dfile=./mydir/my_swagger_file.json"/> 
      <arg value="-Durl=${url}"/> 
      <arg value="-DrepositoryId=my_repo_id"/> 
      </exec> 

Это будет работать только в Windows, но легко адаптируется для любой другой ОС. Интересный бит здесь является repositoryId, что должно указывать на существующий аутентификации в вашем settings.xml:

... 
<servers> 
     <server> 
      <id>my_repo_id</id> 
      <username>your_user_for_deployment</username> 
      <password>your_pwd_for_deployment</password> 
     </server> 
</servers> 
... 

Надежда это поможет вам ^^