Нам нужно построить банку, используя Maven, таким образом, чтобы все ее зависимости были включены, но также и то, что все эти зависимости переименованы (перемещены).Maven - Есть ли способ создать «uber» банку со всеми перестановками зависимостей?
Скажу, наши собственные пакеты начинаются с com.mycompagny.projectx.*
». Мы хотим, чтобы зависимости проекта, чтобы их пакет переименованы начинается с„embedded
“, но не наши собственные классы.
Использование maven-shade-plugin, например, я не в состоянии достичь этого:.
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-shade-plugin</artifactId>
<version>2.3</version>
<configuration>
<shadedArtifactAttached>true</shadedArtifactAttached>
<createDependencyReducedPom>true</createDependencyReducedPom>
<artifactSet>
<includes>
<include>*.*</include>
</includes>
</artifactSet>
<relocations>
<relocation>
<pattern>*</pattern>
<shadedPattern>embedded.</shadedPattern>
<excludes>
<exclude>com.mycompagny.projectx.*</exclude>
</excludes>
</relocation>
</relocations>
</configuration>
<executions>
<execution>
<phase>package</phase>
<goals>
<goal>shade</goal>
</goals>
</execution>
</executions>
</plugin>
Здесь <pattern>*</pattern>
не действует Кроме того, если я использую <pattern></pattern>
(пустая строка), то все перемещается на «вложенной» пакет, даже к ресурсам (в «META -INF "di попечитель тоже)! Конечно, мы хотим, чтобы ресурсы оставались в корне банки.
Я думаю, мы могли бы создать несколько <relocation>
элементов, по одному для каждого пакета зависимостей, но это было бы очень много работы: <relocation>com</relocation>
, <relocation>net</relocation>
, <relocation>javax</relocation>
и т.д.
Любая идея о том, как легко менять место жительства все зависимостей внутри банки uber, не касаясь наших собственных классов, ресурсов и каталога «META-INF»?
Хотя это не решило вашу проблему ... Это _IS_ чрезвычайно полезная недокументированная функция.У меня есть ресурсы, которые нужно переместить в другую папку (а не исходный код, а не в структуру пакета). Спасибо, что написали. – Lucas