Новое в Maven: использование плагина Shade и сторонних фляг - PullRequest
2 голосов
/ 17 июня 2011

Это должно быть довольно просто, но я не могу с этим справиться. Мне нужно создать Uberjar, используя сторонние банки. Я уже следовал этим инструкциям: Включая немавенизированную зависимость, чтобы она работала с maven-shade-plugin и добавила их в локальный репозиторий. Но что теперь? Каждый учебник / пример Maven довольно тенистый (каламбур), и я просто не знаю, как правильно отредактировать файл .pom, чтобы он работал.

Кроме того, я не совсем понимаю, какой "плагин" для тени. Я имею в виду, что я следовал основным учебникам по Maven, и все прошло отлично. Но когда я смотрю на страницу плагина тени, я не могу найти его для загрузки, за исключением исходного кода. Я имею в виду, разве это не плагин? Разве я не должен скачать двоичные файлы и установить их в Maven каким-либо образом?

Извините за экстремальный нубистский вопрос, но, само собой разумеется, я знаю, как приседать о Мейвене.

Ответы [ 2 ]

5 голосов
/ 19 декабря 2011

Чтобы создать затененный (uber) jar, вам просто нужно объявить плагин shade в вашем pom.xml.

Что касается установки плагина shade, просто объявите его в разделе pluginsиз ваших pom.xml это все, что вам нужно сделать.Плагины Maven не устанавливаются вручную, но автоматически загружаются Maven (если они еще не загружены; просто как зависимости), хранятся в вашем локальном репозитории и используются всякий раз, когда они нужны проекту.

Что касается его использования, то многоеКак и другие плагины, объявите его в вашем pom.xml, добавив элемент <plugin> с вашими потребностями конфигурации.Этот плагин ничего не делает автоматически (некоторые делают, некоторые нет) - вы должны указать, какую «цель» выполнить (подумайте «метод класса») и в какой «фазе» (подумайте «шаг» процесса сборки)).Если у вас нет странных потребностей, задайте цель "shade" на этапе "package" (см. Ниже).

Дополнительные возможности конфигурации см. На странице использование оттенков и их примеры (особенно выбор содержимого для uber jar ).Вот простой пример, который, когда вы запускаете mvn package, заменяет ваш оригинальный jar в каталоге target/ на uber jar.Он включает только зависимости времени выполнения, а не те, которые использовались во время тестирования (обратите внимание на элемент <scope> зависимости junit, который не включен в uber jar).

<project>
  <groupId>com.sample</groupId>
  <artifactId>test</artifactId>
  <version>1.0</version>
  <build>
    <plugins>
      <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-shade-plugin</artifactId>
        <version>1.5</version>
        <executions>
          <execution>
            <phase>package</phase>
            <goals>
              <goal>shade</goal>
            </goals>
          </execution>
        </executions>
      </plugin>
    </plugins>
  </build>
  <dependencies>
    <dependency>
      <groupId>com.sample</groupId>
      <artifactId>test-core</artifactId>
      <version>1.0</version>
    </dependency>
    <dependency>
      <groupId>junit</groupId>
      <artifactId>junit</artifactId>
      <version>3.8.1</version>
      <scope>test</scope>
    </dependency>
  </dependencies>
</project>
0 голосов
/ 25 июня 2011

Если вы уже загрузили двоичные файлы и установили их в свой локальный репозиторий Maven, остается только объявить их как зависимости в POM. Если плагин shade также объявлен в POM, простая «установка mvn» должна сгенерировать автономный JAR в целевом каталоге.

...