У меня есть проект, который включает в себя некоторые API Java, некоторые файлы ресурсов и некоторые предварительно созданные модели машинного обучения, которые могут использоваться API Java.Модели в настоящее время находятся в src/main/resources
, и классы загружают их через Class.getResource
.Модели используются в нескольких модульных тестах, которые обеспечивают правильную работу API-интерфейсов.
Все это в основном нормально, за исключением того, что модели довольно большие, и некоторым пользователям API-интерфейсов модели могут вообще не понадобиться,(Им просто потребуются классы Java и другие файлы ресурсов меньшего размера.) Поэтому я хотел бы организовать распределение, в котором пользователи могли бы выбирать, включать файлы модели или нет.
Сначала я подумал, что, возможно,модели должны быть отдельным проектом Maven, но если я их вытащу, я не уверен, как будут работать зависимости.Проект моделей должен был бы зависеть от основного проекта для API Java, но основной проект должен был бы зависеть от проекта моделей для его тестов.Так что это кажется круглым.
Тогда я подумал, что, возможно, мне следует попытаться создать отдельную банку с классификатором, чтобы, например, пользователи, которым нужны только API, писали:
<dependency>
<groupId>foo</groupId>
<artifactId>bar</artifactId>
<version>0.5.0</version>
</dependency>
и пользователи, которым нужны были и API, и модели, написали бы:
<dependency>
<groupId>foo</groupId>
<artifactId>bar</artifactId>
<version>0.5.0</version>
</dependency>
<dependency>
<groupId>foo</groupId>
<artifactId>bar</artifactId>
<version>0.5.0</version>
<classifier>models</classifier>
</dependency>
Но я не уверен, как настроить все так, чтобы при запуске mvn package
некоторые ресурсы выделялись в банку сдругой классификатор.Как я могу это сделать?
(В идеале, все это могло бы произойти только с базовым mvn package
и не требовало бы возиться с, скажем, разными профилями, поскольку я бы всегда был быупаковка вещей таким же образом.)