Как настроить общий путь к классу для всех зависимостей внутри проекта 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>