У вас есть несколько вариантов, однако, потенциально самый простой подход был бы выделить 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»).
Вот пример из РОМ для этих проектов:
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 (один МВН пакет комментарий), то вы можете создать мастер-п в 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 Аппу и AppB. При желании вы также можете создать POM appA и appB (pom-appA.xml). Это не самый чистый подход с точки зрения Maven, но он будет функционировать. Единственная проблема, с которой вы столкнулись, заключается в том, что версия mylib не является версией, на которой зависит приложение AppA или AppB. В этом случае ваш код appA или appB будет компилироваться в отношении версии в вашем репозитории maven (если эта версия существует).
Существует много других вариантов, которые вы можете использовать, и я видел много дискуссий о блогах и вики, что является лучшим для различных сценариев. Однако обычно это сводится к тому, что лучше всего подходит для вас и вашей организации. Пока это работает, и вы не собираетесь создавать настраиваемое, не переносное решение maven, то вы, вероятно, все в порядке.
Надеюсь, это даст вам некоторые мысли, которые вы можете использовать.
Спасибо, это помогает. Я вручную отредактировал файл Eclipse .classpath, чтобы включить mylib (как это было до maven), и все работает как ожидается в Eclipse. –