Подтвердить что ты не робот

Как исключить использование jar-сервера в mvn-развертывании?

Когда я запускаю "mvn deploy: deploy", maven разворачивает 4 файла jar в мой внутренний удаленный репозиторий.

Это:

[модуль-имя] -1.jar
[Модуль-имя] -1.pom
[Модуль-имя] -1-sources.jar
[module-name] -1-tests.jar

На самом деле существует больше файлов, таких как файлы md5 и sha1, которые развертываются. Но для простоты я просто пропущу эти файлы здесь.

Есть ли способ исключить [module-name] -1-sources.jar из процесса развертывания?

Один из способов, о котором я могу думать, - использовать "mvn deploy: deploy-file", который позволяет мне определить, какую банку развертывать. Но так как у меня есть несколько десятков модулей для развертывания, будет хорошо, если я могу настроить исключение файла развертывания в pom.xml. В противном случае мне придется написать script для развертывания.

Спасибо,
Ричард

4b9b3361

Ответ 1

Начиная с версии 2.2 maven-source-plugin вы можете пропустить генерацию источника с опцией конфигурации без необходимости размещения плагина в профиле в родительском pom:

  <!-- Do not generate a source jar -->
  <plugin>
    <groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-source-plugin</artifactId>
    <version>2.2.1</version>
    <configuration>
      <skipSource>true</skipSource>
    </configuration>
  </plugin>

Ответ 2

Есть ли способ исключить [module-name] -1-sources.jar из процесса развертывания?

Не создавайте источники, если вы не хотите их развертывать. Поэтому либо удалите следующее (что вы должны иметь в POM), либо поместите его в профиль, который вы не используете или не исключаете во время выпуска (интересно, когда вы используете источники в этом случае):

<build>
  <plugins>
    <plugin>
      <groupId>org.apache.maven.plugins</groupId>
      <artifactId>maven-source-plugin</artifactId>
      <executions>
        <execution>
          <goals>
            <goal>jar</goal>
          </goals>
        </execution>
      </executions>
    </plugin>
  </plugins>
</build>

Ответ 3

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

В части выполнения "maven-source-plugin" в разделе плагинов установите атрибут attach на false. Эта конфигурация будет генерировать source.jar для вашего модуля, но не привязана к списку артефакта проекта.

Пример фрагмента:

<plugins>
    <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-source-plugin</artifactId>
        <version>${source.plugin.version}</version>
        <executions>
            <execution>
                <id>module1-sources</id>
                <phase>verify</phase>
                <goals>
                    <goal>jar-no-fork</goal>
                </goals>
                <configuration>
                    <!-- The below specified attribute 'attach' will disable the sources.jar not included in the artifact list -->
                    <attach>false</attach>
                </configuration>
            </execution>
        </executions>
    </plugin>
</plugins>

Ответ 4

Если вы не хотите изменять POM, вы можете пропустить создание jar-источников, добавив переменную enviroment в командную строку:

-Dsource.skip (для maven-source-plugin до версии 2.4, см. 2.4 документ)

или же

-Dmaven.source.skip (для maven-source-plugin версии 3.0. 0+, см . Документ 3.0.1 или последний)

Ответ 5

Разверните сайт плагина maven:

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

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

Если вы посмотрите на страницу целей:

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

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

Одна вещь, которую вы могли бы сделать, - сделать другую сборку, которая не создает банки, которые вы не хотите создавать, т.е. сделать другой сборный пакет или что-то подобное для этой сборки, и создать сборку, когда вы пытаясь развернуть конкретные пакеты.


Изменить: у koppernickus есть полное описание этого, я бы порекомендовал вам видеть его сообщение.

Ответ 6

Maven mvn deploy:deploy развертывает все произведенные артефакты во время процесса maven (жизненный цикл по умолчанию). Чтобы не развернуть [module-name]-1-sources.jar, вы должны просто (?) Не производить его. Если вы используете maven-source-plugin для подключения исходных файлов, просто не используйте их больше.

Если это не так, вы испытываете, пожалуйста, предоставьте более подробную информацию:

  • Как вы создаете артефакт [module-name]-1-sources.jar (какой плагин генерирует этот артефакт?)
  • зачем вам нужно генерировать источники, но не нужно их разворачивать в репозиторий?