У меня есть группа проектов, которые имеют (а) сгенерированные бобы и (б) код для работы с этими бобами. Я хотел бы, чтобы каждый такой проект создавал два разных артефакта: обычный артефакт jar
, содержащий все классы, и настраиваемый артефакт beans
, содержащий только сгенерированные типы.Пользовательский второй упаковочный артефакт из одного pom.xml, как jar и test-jar?
Я собрал быстрый плагин, который создает второй артефакт beans
, используя артефактные вложения и классификатор «beans», но он не работает хорошо в m2e. По этой причине я думаю, что создание настраиваемого типа упаковки (например, «тест-банку») - это «Правильная вещь».
Чтобы быть совершенно ясно, о чем я воображал, это ПОМ работает бы сегодня и создает два различных артефактов с двумя различными типами упаковки:
<project>
<groupId>${groupId}</groupId>
<artifactId>${artifactId}</artifactId>
<version>${version}</version>
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-jar-plugin</artifactId>
<executions>
<execution>
<goals>
<goal>test-jar</goal>
</goals>
</execution>
</executions>
</plugin>
</plugins>
</build>
</project>
который можно импортировать с одним из следующих способов:
<dependency>
<groupId>${groupId}</groupId>
<artifactId>${artifactId}</artifactId>
<version>${version}</version>
<!-- <type>jar</type> -->
</dependency>
<dependency>
<groupId>${groupId}</groupId>
<artifactId>${artifactId}</artifactId>
<version>${version}</version>
<type>test-jar</type>
</dependency>
Я хотел бы создать плагин, который позволит мне использовать (например) beans
вместо test-jar
создать подобный «спаренный» артефакт.
Я ткнул в исходный код maven, и вы может создавать нестандартные типы. Тем не менее, «test-jar» кажется «испеченным» в maven, поэтому я не могу сказать, есть ли у него какие-то специальные функции, и я не могу дублировать это поведение с помощью своего собственного плагина.
Конечно, если есть другой способ справиться с таким поведением без пользовательских типов, которые понимает m2e - например, но получение m2e для понимания моего классификатора, хотя that seems hard - Я все уши! :)
Как я могу сделать подобный парный тип упаковки? Я видел this answer о том, как создавать пользовательские типы, но создается впечатление, что создается только один артефакт из помпы с заданным пользовательским типом упаковки.
Мне нравится это предложение! Очень просто. Но я думаю, что полученный артефакт может быть импортирован только как зависимость с использованием классификаторов, правильно? Сначала я попробовал очень похожий подход, затем обнаружил, что, хотя maven поддерживает классификаторы просто отлично, m2e этого не делает. Поиск поддержки m2e - это то, что заставило меня пойти на эту дикую охоту на гусей. Ответ, который я вам предоставил, позволяет импортировать полученный артефакт с использованием настраиваемого типа упаковки, который поддерживает как maven, так и m2e. – sigpwned