У меня есть следующая структура проекта:
parent (packing: pom)
+ framework (packing: jar)
+ plugins (packing: pom)
+ plugin_1 (packing: pom)
+ impl (packing: jar)
+ e2e_test (packing: jar)
+ plugin_2 (packing: pom)
+ impl (packing: jar)
+ e2e_test (packing: jar)
Внутри plugin_1.impl
и plugin_2.impl
У меня есть resource.xml
, который описывает плагин.
Сборка в порядке,то есть когда я хочу построить весь проект, он строит по порядку.Однако при установке не удается создать такую же структуру.После установки локальный репозиторий выглядит так:
com/company
+ parent/version
+ pom file
+ framework/version
+ jars
+ plugins/version
+ pom file
+ plugin_1/version
+ pom file
+ plugin_1.impl/version
+ jar
+ plugin_1.e2e_tests/version
+ jar
+ plugin_2/version
+ pom file
+ plugin_2.impl/version
+ jar
+ plugin_2.e2e_tests/version
+ jar
Но я хочу:
com/company/parent/version
+ framework.jar
+ plugins
+ plugin_1.jar
+ plugin_1.xml (renamed resource.xml)
+ plugin_2.jar
+ plugin_2.xml (renamed resource.xml)
Есть ли способ создать нужную структуру?
Я пробовалmaven-install-plugin
Например:
mvn org.apache.maven.plugins:maven-install-plugin:3.0.0-M1:install-file \
-Dfile=parent/plugins/plugin_1/impl/resource.xml \
-DgroupId=com.company \
-DartifactId=parent \
-Dversion=1.0-SNAPSHOT \
-Dpackaging=file \
-DgeneratePom=true
или pom.xml
эквивалент этого (но для банки):
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-install-plugin</artifactId>
<version>3.0.0-M1</version>
<executions>
<execution>
<phase>install</phase>
<goals>
<goal>install-file</goal>
</goals>
<configuration>
<groupId>${project.groupId}</groupId>
<artifactId>${project.parent.parent.artifactId}</artifactId>
<version>${project.version}</version>
<packaging>jar</packaging>
<file>${project.build.directory}/${project.build.finalName}.jar</file>
</configuration>
</execution>
</executions>
</plugin>
Но это всегда будет переименовывать файл в соответствии с artifactId
и в итоге я перезаписал один и тот же файл.
Мне удалось создать описанную структуру с помощью copy-rename-maven-plugin
в целевом каталоге самого верхнего родителя.
Я хочу эту структуру, потому что:
- В
framework
можно использовать любой jar
, помещенный в каталог plugins
с соответствующим дескриптором. - Я не хочу делать это вручную каждый раз, когда перекомпилирую илиизменить что-то внутри нескольких плагинов.
- Сквозные тесты для модуля работают, вызывая
framework plugin_1 (args)
внутри теста и проверяя результат.Для этого мне нужна рабочая структура внутри локального репозитория, от которой зависит тестовый проект.
Есть ли способ создать нужную структуру внутри локального репозитория?