Maven копирует содержимое папки в банке root при генерации - PullRequest
0 голосов
/ 20 апреля 2020

Добрый вечер, я создаю проект Java и пытаюсь создать его с помощью Maven. Проекту нужны библиотеки LWJGL, также я добавил соответствующие зависимости в моем pom. xml. Тем не менее, мне также нужно включить собственные библиотеки LWJGL в мой проект. Для этого я создал папку с именем native в той же ветке, что и папка sr c, и поместил в нее собственные библиотеки. Я использую следующий код, чтобы указать maven включить эту папку в jar:

<resources>
  <resource>
    <filtering>false</filtering>
    <directory>${basedir}/native</directory>
    <includes>
      <include>**/*.*</include>
    </includes>
  </resource>
</resources>

, и я использую плагин maven resources, чтобы определить, где я хочу разместить ресурсы в сгенерированном jar (в собственной папке).

<plugin>
    <artifactId>maven-resources-plugin</artifactId>
    <configuration>
      <outputDirectory>${project.build.outputDirectory}\native</outputDirectory>
    </configuration>
</plugin>

Затем я создаю банку с помощью команды maven package. Все хорошо работает в сгенерированном jar, но мне нужно также упаковать в него мои библиотеки LWJGL. Также я пытался использовать maven-assembly-plugin, maven-dependency-plugin и maven-shade-plugin. В трех случаях библиотеки jar хорошо упакованы, но мои нативные все копируются в root моего Jar, и я не могу объяснить, почему. По очевидным причинам памяти я не хочу, чтобы это произошло, и я бы предпочел не удалять их вручную. Есть идеи, как решить эту проблему? Заранее спасибо.

1 Ответ

0 голосов
/ 20 апреля 2020

Если вам нужно включить в ваши банки другую банку, решение - сделать банку для жира.

Вот пример.

        <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-assembly-plugin</artifactId>
        <version>3.1.1</version>

        <configuration>
            <descriptorRefs>
                <descriptorRef>jar-with-dependencies</descriptorRef>
            </descriptorRefs>
        </configuration>

        <executions>
            <execution>
                <id>make-assembly</id>
                <phase>package</phase>
                <goals>
                    <goal>single</goal>
                </goals>
            </execution>
        </executions>

    </plugin>

Но я не уверен, что Вы действительно этого хотите ... Можно ли включать jar в classpath или как зависимость maven?

<!-- https://mvnrepository.com/artifact/org.lwjgl/lwjgl -->
 <dependency>
     <groupId>org.lwjgl</groupId>
     <artifactId>lwjgl</artifactId>
     <version>3.1.0</version>
 </dependency>
...