Включая некоторые зависимости в моей скомпилированной банке - PullRequest
0 голосов
/ 08 января 2019

Здравствуйте, пользователи stackoverflow, у меня в рабочем проекте 5 зависимостей. Я работаю над проектом, который не содержит основного метода.

Что я хотел бы сделать, так это включить 2 (HikariCP и slf4j) из моих 5 зависимостей в финальном банке, но я не понимаю, как это сделать, он всегда добавляет их все.

Редактировать: я использую затмение

1 Ответ

0 голосов
/ 08 января 2019

Использование Maven

Вы можете использовать maven-shade-plugin для создания толстой банки (или убер-банки). Это упакует все ваши зависимости внутри фляги:

<build>
    <plugins>
        <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-shade-plugin</artifactId>
            <executions>
                <execution>
                    <phase>package</phase>
                    <goals>
                        <goal>shade</goal>
                    </goals>
                </execution>
            </executions>
            <configuration>
                <finalName>YOUR_JAR_FINAL_NAME</finalName>
            </configuration>
        </plugin>
    </plugins>
</build>

Документация, связанная с maven-shade-plugin , может быть найдена здесь

ОБНОВЛЕНИЕ: Поскольку вы хотите включить в него всего несколько зависимостей, вы можете проверить Выбор содержимого для раздела Uber JAR :

Вы можете использовать тег include или exclude , чтобы выбрать, какой контент будет предоставлен банке, вы можете найти несколько примеров из документов ниже:

  • Исключая

        <configuration>
          <artifactSet>
            <excludes>
              <exclude>classworlds:classworlds</exclude>
              <exclude>junit:junit</exclude>
              <exclude>jmock:*</exclude>
              <exclude>*:xml-apis</exclude>
              <exclude>org.apache.maven:lib:tests</exclude>
              <exclude>log4j:log4j:jar:</exclude>
            </excludes>
          </artifactSet>
        </configuration>
    
  • Включая и исключая

        <configuration>
          <filters>
            <filter>
              <artifact>junit:junit</artifact>
              <includes>
                <include>junit/framework/**</include>
                <include>org/junit/**</include>
              </includes>
              <excludes>
                <exclude>org/junit/experimental/**</exclude>
                <exclude>org/junit/runners/**</exclude>
              </excludes>
            </filter>
            <filter>
              <artifact>*:*</artifact>
              <excludes>
                <exclude>META-INF/*.SF</exclude>
                <exclude>META-INF/*.DSA</exclude>
                <exclude>META-INF/*.RSA</exclude>
              </excludes>
            </filter>
          </filters>
        </configuration>
    

ОБНОВЛЕНИЕ 2: Для запускаемого файла JAR вы можете следовать этому разделу документации , относящейся к Исполняемым банкам

В Затмении

Вы можете использовать обязательные библиотеки Package в сгенерированном параметре JAR , недостатком которого является то, что вы не можете реально выбрать, в какие зависимости вы хотите включить, поскольку он оценивает все необходимые проект libs for you.

enter image description here

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

enter image description here

...