#java #maven #jar
#java #maven #jar
Вопрос:
Структура моего проекта примерно такая.
ProjectX
— зависит от ProjectY
того, какой из них является локальной JAR, добавленной в качестве зависимости, подобной этой:
<dependency>
<groupId>com.wow.projecty</groupId>
<artifactId>projecty</artifactId>
<version>1.0</version>
<scope>system</scope>
<systemPath>/Users/somepath/ProjectY.jar</systemPath>
</dependency>
Теперь я создаю JAR для ProjectX
со всеми зависимостями, связанными в JAR, используя это.
<plugin>
<artifactId>maven-assembly-plugin</artifactId>
<configuration>
<descriptorRefs>
<descriptorRef>jar-with-dependencies</descriptorRef>
</descriptorRefs>
<archive>
<manifest>
<addClasspath>true</addClasspath>
<mainClass>ProjectXDriver</mainClass>
</manifest>
</archive>
</configuration>
<executions>
<execution>
<id>make-assembly</id>
<phase>package</phase>
<goals>
<goal>single</goal>
</goals>
</execution>
</executions>
</plugin>
Это связывание всех зависимостей из Maven, но не тех, что из локальной файловой системы. В этом случае классы из ProjectY
отсутствуют в конечном JAR. (Также проверено с помощью jar tf
)
Чего я не понимаю?
Комментарии:
1. Почему вы используете зависимость в системной области? Не создается сборкой Maven / Gradle?
2. Это временная вещь, прямо сейчас я ее не настраивал. Но также любопытно, как связать зависимости от области действия системы в целевой JAR.
Ответ №1:
Быстрое исправление, которое я нашел для этого. Просто установите JAR в локальный репозиторий maven и используйте его в обычном режиме (без system
области видимости / systemPath
.
mvn install:install-file -Dfile=ProjectY.jar -DpomFile=../pom.xml