Связать локальную зависимость JAR внутри целевого JAR

#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