Как настроить общий путь к классу для всех зависимостей внутри проекта maven?

У меня есть весенний проект, который скомпилирован в файл JAR. Давайте назовем этот проект A. Есть еще один проект B, который зависит от проекта A. У меня нет контроля над проектом B. Проект B доступен в виде двух файлов. Один из них - исполняемый файл JAR, а другой - ZIP-файл. Этот zip-файл содержит все ресурсы проекта. Для вызова API из BI необходимо передать параметр resourceLocation (это URL вышеупомянутой папки ресурсов). Я включил и B.jar, и B.zip в свой A в качестве зависимостей.

Теперь я создаю исполняемый файл jar-with-all-dependencies для моего проекта A. Наряду с другими зависимостями, папка resources из B.zip присутствует внутри моего jar-файла.

Теперь проблема: каким должен быть resourcePath, который я должен дать при вызове API B изнутри A. Я пробовал. и./resources. Но Б не понимает этого. Как я могу получить абсолютный путь к папке ресурсов и передать его B. Или настроить общий путь к классам для A и B.

1 ответ

Решение

Вы можете попробовать распаковать zip-файл maven-dependency-plugin в classpath. Распаковать папку ресурсов zip-зависимостей, которая добавит артефакты в classpath A

<plugin>
    <groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-dependency-plugin</artifactId>
    <version>2.2</version>
    <executions>
      <execution>
        <id>unpack-sigar</id>
        <phase>package<!-- or any other valid maven phase --></phase>
        <goals>
          <goal>unpack-dependencies</goal>
        </goals>
        <configuration>
          <includeGroupIds>somegroupid</includeGroupIds>
          <includeArtifactIds>B</includeArtifactIds>
          <outputDirectory>
             ${project.build.directory}/src/main/resources             
          </outputDirectory>
        </configuration>
      </execution>
    </executions>
</plugin>
Другие вопросы по тегам