Как исключить исходные файлы jar в mvn deploy? - PullRequest
18 голосов
/ 06 апреля 2010

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

Это:

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

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

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

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

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

Ответы [ 6 ]

18 голосов
/ 02 июня 2014

Начиная с версии 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>
5 голосов
/ 06 апреля 2010

Есть ли способ исключить [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>
4 голосов
/ 05 августа 2016

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

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

или

-Dmaven.source.skip (для maven-source-plugin версия 3.0.0 + , см. 3.0.1 doc или последний )

4 голосов
/ 15 июля 2015

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

В исполнительной части "maven-source-plugin" в секции plugins , установите атрибут присоединения на false . Эта конфигурация будет генерировать sources.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>
2 голосов
/ 06 апреля 2010

Развернуть плагин Maven сайта:

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

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

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

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

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

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


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

1 голос
/ 06 апреля 2010

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

Если это не тот случай, с которым вы столкнулись, просьба сообщить подробности:

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