Лучшие практики для копирования файлов со Знатоком

У меня есть файлы конфигурации и различные документы, которые я хочу скопировать от dev среды до каталога dev-сервера с помощью Maven2. Странно, Знаток не кажется сильным в этой задаче.

Некоторые опции:

  • Простое использование задача копии в Знатоке

  • Используйте плагин Муравья для выполнения копии с Муравья.

    • Создайте артефакт zip типа, вместе с "основным" артефактом АНГЛИЧАНИНА, который обычно имеет банку типа, затем распакуйте тот артефакт из репозитория в целевой каталог.

    • плагин ресурсов знатока, как упомянуто ниже.

    • Плагин блока знатока - но это, кажется, требует большого количества ручных определений, когда я хочу сделать вещи просто и "традиционно".

    • Эта страница даже показывает, как создать плагин, чтобы сделать копирование!

    • плагин загрузки знатока, как упомянуто ниже.

    • плагин зависимости знатока с копией, как упомянуто ниже.


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

Совет?

183
задан Nicolás Alarcón Rapela 12 September 2019 в 04:26
поделиться

7 ответов

Не уклоняйтесь от плагина Antrun. Просто, потому что некоторые люди склонны думать, что Муравей и Знаток находятся в оппозиции, они не. Используйте задачу копии, если необходимо выполнить некоторую неизбежную одноразовую настройку:

<project>
  [...]
  <build>
    <plugins>
      [...]
      <plugin>
        <artifactId>maven-antrun-plugin</artifactId>
        <executions>
          <execution>
            <phase>deploy</phase>
            <configuration>
              <tasks>

                <!--
                  Place any Ant task here. You can add anything
                  you can add between <target> and </target> in a
                  build.xml.
                -->

              </tasks>
            </configuration>
            <goals>
              <goal>run</goal>
            </goals>
          </execution>
        </executions>
      </plugin>
    </plugins>
  </build>
  [...]
</project>

В ответе на этот вопрос я фокусируюсь на деталях того, что Вы спросили. Как я копирую файл? Вопрос и имя переменной приводят меня к большие вопросы как: "Есть ли лучший способ иметь дело с настройкой сервера?" Используйте Знатока в качестве системы сборки для генерации развертываемого артефакта, затем выполните эти настройки или в отдельных модулях или где-то в другом месте полностью. При совместном использовании немного большего количества среды сборки мог бы быть лучший путь - существуют плагины для настройки многих серверов. Вы могли присоединить блок, который распакован в корне сервера? Какой сервер Вы используете?

Снова, я уверен, что существует лучший путь.

112
ответ дан Tim O'Brien 23 November 2019 в 06:01
поделиться

Я могу только предположить, что Ваш $ {project.server.config} свойство является чем-то пользовательским, определил и за пределами стандартного расположения каталога.

Если так, тогда я использовал бы задачу копии.

3
ответ дан whaley 23 November 2019 в 06:01
поделиться

Ну, знаток, как предполагается, не хорош в выполнении прекрасных детализированных задач, это не язык сценариев как удар или муравей, это довольно декларативно - Вы говорите - мне нужна война или ухо, и Вы получаете его. Однако, если необходимо настроить, как война или ухо должны быть похожими внутри, у Вас есть проблема. Это является просто не процедурным как муравей, но описание. Это имеет некоторых профессионалов в начале и могло иметь много недостатков в конце.

я предполагаю, что начальное понятие состояло в том, чтобы иметь прекрасные плагины, это "просто работает", но действительность отличается, если Вы делаете нестандартный материал.

, Если Вы однако прикладываете достаточно усилий к своим англичанам и немного пользовательских плагинов, Вы доберетесь, намного лучшая среда сборки как с муравьем, например (зависит от Вас проект, конечно, но это становится более верным для больших проектов).

5
ответ дан siddhadev 23 November 2019 в 06:01
поделиться

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

2
ответ дан Brian Fox 23 November 2019 в 06:01
поделиться

Приведенное выше решение для муравья проще всего настроить, но мне повезло с использованием maven-upload-plugin от Atlassian. Мне не удалось найти хорошую документацию, вот как я ее использую:

<build>
  <plugin>
    <groupId>com.atlassian.maven.plugins</groupId>
    <artifactId>maven-upload-plugin</artifactId>
    <version>1.1</version>
    <configuration>
       <resourceSrc>
             ${project.build.directory}/${project.build.finalName}.${project.packaging}
       </resourceSrc>
       <resourceDest>${jboss.deployDir}</resourceDest>
       <serverId>${jboss.host}</serverId>
       <url>${jboss.deployUrl}</url>
     </configuration>
  </plugin>
</build>

Переменные, такие как «$ {jboss.host}», указанные выше, определены в моем ~ / .m2 / settings.xml и активируются с помощью профилей maven. Это решение не ограничено JBoss, это то, что я назвал своими переменными. У меня есть профиль для dev, test и live. Поэтому, чтобы загрузить свое ухо в экземпляр jboss в тестовой среде, я бы выполнил:

mvn upload:upload -P test

Вот фрагмент из settings.xml:

<server>
  <id>localhost</id>
  <username>username</username>
  <password>{Pz+6YRsDJ8dUJD7XE8=} an encrypted password. Supported since maven 2.1</password>
</server>
...
<profiles>
  <profile>
    <id>dev</id>
    <properties>
      <jboss.host>localhost</jboss.host> 
      <jboss.deployDir>/opt/jboss/server/default/deploy/</jboss.deployDir>
      <jboss.deployUrl>scp://root@localhost</jboss.deployUrl>
    </properties>
  </profile>
  <profile>
    <id>test</id>
    <properties>
       <jboss.host>testserver</jboss.host>
       ...

Примечания: Репозиторий Atlassian Maven, в котором есть этот плагин, находится здесь: https://maven.atlassian.com/public/

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

`

6
ответ дан 23 November 2019 в 06:01
поделиться
<build>
    <plugins>
        ...
        <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-resources-plugin</artifactId>
            <version>2.3</version>
        </plugin>
    </plugins>
    <resources>
        <resource>
            <directory>src/main/java</directory>
            <includes>
                <include> **/*.properties</include>
            </includes>
        </resource>
    </resources>
    ...
</build>
134
ответ дан 23 November 2019 в 06:01
поделиться

Подводя итог некоторым прекрасным ответам, приведенным выше: Maven разработан для создания модулей и копирования результатов в репозиторий Maven. Любое копирование модулей во входной каталог развертывания / установщика должно выполняться вне контекста основных функций Maven, например, с помощью команды Ant / Maven copy .

-1
ответ дан 23 November 2019 в 06:01
поделиться
Другие вопросы по тегам:

Похожие вопросы: