Укажите некомпилируемые зависимости в Maven и упакуйте их как ресурсы - PullRequest
5 голосов
/ 11 июня 2009

Мне нужно создать JAR-файл, который включает в себя (другие, внешние проекты) артефакты Maven.

Артефакты должны быть включены как вещи в src/main/resources, без какой-либо обработки. Несмотря на то, что они сами являются файлами jar, они не являются зависимостями времени компиляции для моего кода и не должны добавляться в путь к классам ни на этапах компиляции, ни тестирования, ни на этапе выполнения.

Я могу сделать это, загрузив файлы и поместив их в src/main/resources, но я бы предпочел, чтобы они были разрешены с помощью репозитория Maven.

Ответы [ 3 ]

2 голосов
/ 11 июня 2009

Вот пример того, что вы можете добавить в ваш pom - он скопирует артефакт с указанным идентификатором из указанного проекта в указанное вами место.

<plugin>
        <artifactId>maven-dependency-plugin</artifactId>
        <executions>
          <execution>
            <id>copy</id>
            <goals>
              <goal>copy-dependencies</goal>
            </goals>
            <configuration>
              <artifactItems>
                <artifactItem>
                  <groupId>id.of.the.project.group.to.include</groupId>
                  <artifactId>id-of-the-project's-artifact-to-include</artifactId>
                  <version>${pom.version}</version>
                </artifactItem>
              </artifactItems>
              <includeArtifactIds>id-of-the-project's-artifact-to-include</includeArtifactIds>
              <outputDirectory>${project.build.directory}/etc-whatever-you-want-to-store-the-dependencies</outputDirectory>
            </configuration>
          </execution>
    </executions>
</plugin>
2 голосов
/ 11 июня 2009

Вы можете использовать плагин зависимостей для загрузки и помещения необходимых артефактов в каталог target/classes на этапе ресурсов процесса.

См. Пример использования для копирования артефактов

1 голос
/ 11 июня 2009

Поскольку вы говорите, что хотите получить jar, плагин сборки с пользовательским дескриптором сборки, вероятно, решит эту проблему.

Добавьте <dependencySet> и укажите параметр <unpack>, чтобы эти внешние артефакты были расплющены внутри вашей банки.

...