У вас есть несколько вариантов, однако, потенциально самый простой подход - это выделить mylib в собственный проект Maven с собственным жизненным циклом.Преимущество этого подхода заключается в том, что вы можете поддерживать наличие нескольких версий mylib, а ваши приложения A и B могут ссылаться на разные версии mylib по мере необходимости.Если mylib и appA открыты в Eclipse (и mylib ссылается на версию mylib, которую вы открыли), вы можете создать приложение так же, как и до использования Maven.
Этот подход не требует каких-либо зависимостей между структурами каталогов приложений, поэтому вы можете использовать что-то похожее на следующее:
/ myapps / mylib
/ myapps / appA
/ myapps / appB
Недостатком этого подхода является то, что maven не будет автоматически создавать appA и mylib (или appB и mylib), поскольку они рассматриваются как отдельные приложения.Тем не менее, это не может быть большой проблемой, если ваши приложения используют предопределенные и встроенные версии mylib (которые были загружены в ваш локальный репозиторий maven с помощью «mvn install»).
Вот примериз POM для этих проектов:
mylib:
<project>
<modelVersion>4.0.0</modelVersion>
<groupId>com.test</groupId>
<artifactId>myLib</artifactId>
<versioning>0.0.1</versioning>
<packaging>jar</packaging>
<name>mylib</name>
...
</project>
appA:
<project>
<modelVersion>4.0.0</modelVersion>
<groupId>com.test</groupId>
<artifactId>appA</artifactId>
<packaging>jar</packaging>
<name>appA</name>
...
<dependencies>
<groupId>com.text</groupId>
<artifactId>mylib</artifactId</artifactId>
<version>0.0.1</version>
</dependencies>
...
</project>
appB:
<project>
<modelVersion>4.0.0</modelVersion>
<groupId>com.test</groupId>
<artifactId>appB</artifactId>
<packaging>jar</packaging>
<name>appB</name>
...
<dependencies>
<groupId>com.text</groupId>
<artifactId>mylib</artifactId</artifactId>
<version>0.0.1</version>
</dependencies>
...
</project>
Если вы все еще хотитеДля удобства родительского POM (один комментарий к пакету mvn) вы можете создать главный pom в папке / myapps, как показано ниже:
<project>
<groupId>com.test</groupId>
<version>0.0.1</version>
<artifactId>myapps</artifactId>
<packaging>pom</packaging>
<name>myapps</name>
<modules>
<module>shared</modules>
<module>appA</modules>
<module>appB</modules>
</modules>
</project>
Этот POM автоматически создает myapp, appA и appB.При желании вы также можете создать POM для appA и appB (pom-appA.xml).Это не самый чистый подход с точки зрения Maven, но он будет функционировать.Единственная проблема, с которой вы столкнетесь, - это если версия mylib не является версией, от которой зависит appA или appB.В этом случае ваш код appA или appB будет компилироваться с версией в вашем репозитории maven (если эта версия существует).
Есть также много других опций, которые вы можете использовать, и я видел множество обсуждений блогов.и вики о том, какой лучше для разных сценариев.Однако обычно все сводится к тому, что лучше всего подходит для вас и вашей организации.Пока это работает и вы не собираетесь создавать нестандартное непереносимое решение maven, вы, вероятно, все делаете хорошо.
Надеюсь, это даст вам некоторые мысли, которые вы сможете использовать.