У меня есть проект, в котором будут перемещены пакеты (затененная банка)
pom. xml:
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<artifactId>artifact-child</artifactId>
<name>artifact-child</name>
<parent>
<groupId>group</groupId>
<artifactId>artifact</artifactId>
<version>${revision}</version>
</parent>
<properties>
<maven.compiler.source>1.8</maven.compiler.source>
<maven.compiler.target>1.8</maven.compiler.target>
</properties>
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-shade-plugin</artifactId>
<version>3.2.2</version>
<configuration>
<!-- <shadedArtifactAttached>true</shadedArtifactAttached> -->
<relocations>
<reloaction>
<pattern>example</pattern>
<shadedPattern>${super-package}.example</shadedPattern>
</reloaction>
</relocations>
</configuration>
<executions>
<execution>
<phase>package</phase>
<goals>
<goal>shade</goal>
</goals>
</execution>
</executions>
</plugin>
</plugins>
</build>
</project>
И у меня есть второй проект, для которого требуется затенение jar во время выполнения.
pom. xml:
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>testversion</groupId>
<artifactId>testv</artifactId>
<version>0.0.1-SNAPSHOT</version>
<packaging>jar</packaging>
<name>testv</name>
<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
</properties>
<dependencies>
<dependency>
<groupId>group</groupId>
<artifactId>artifact-child</artifactId>
<version>0.0.1</version>
<classifier>shaded</classifier>
</dependency>
</dependencies>
</project>
Мой вопрос:
Eclipse найдите другой проект в своей рабочей области и используйте непосредственно исходный код.
Например: я должен написать import example.myclass
вместо import org.example.myclass
.
В некоторых случаях это может быть проблемой. Можно ли сказать, что maven или Eclipse должны использовать «затененную банку» вместо исходного исходного кода?
Нужно ли создавать онлайн-хранилище, чтобы maven мог загружать только затененную банку?
Я обнаружил два других сообщения stackoverflow (без результата):
Мультимодульная затененная зависимость Maven Eclipse
Как установить заштрихованную банку вместо оригинальной баночки
РАСТВОРЕНО:
Мои ошибки:
1. Версия родителя должна быть объявлена напрямую, а не через свойства
2. Забыл запустить «Maven Install»
Решение:
Maven работает без ошибок, но Eclipse использует открытый проект, а не затененный jar.
Нашел решение здесь: Как я могу загрузить один необработанный файл из частного репозитория github с помощью командной строки? .
Открыть свойства проекта. Под Tap Maven снимите флажок «Разрешить зависимости из проектов Workspace»