Как добавить проект в качестве зависимости от другого проекта?
есть два независимых проектов (myWarProject и MyEjbProject). Поэтому, когда я строю myWarProject Мне нужно установить MyEjbProject в локальный репозиторий, поэтому я могу определить в myWarProject как зависимость и успешно упаковать myWarProject.
есть ли способ справиться с этим без установки MyEjbProject отдельно, а также без определения в качестве родительских модулей.
Я знаю, что это может быть достигнуто с помощью Ant build, но интересно, есть ли способ справиться через maven?
мы можем создать родительский проект с "pom" и переместить два других под родительский проект. Однако, к сожалению, я не могу этого сделать, поскольку в настоящее время у нас уже есть эти два отдельных проекта в CVS, которые я не могу изменить структуру. Если я могу справиться с этим через POM-файл, это то, что я ищу.
1 ответ:
предполагая, что MyEjbProject не является другим проектом Maven, который вы владеете или хотите построить с помощью maven, вы можете использовать системные зависимости для ссылки на существующий файл jar проекта, например
<project> ... <dependencies> <dependency> <groupId>yourgroup</groupId> <artifactId>myejbproject</artifactId> <version>2.0</version> <scope>system</scope> <systemPath>path/to/myejbproject.jar</systemPath> </dependency> </dependencies> ... </project>тем не менее, обычно лучше (и предпочтительнее) установить пакет в репозиторий, сделав его проектом maven и построив его или установив его так, как вы уже, кажется, делаете.
если они, однако, зависят друг от друга, вы можете всегда создавайте отдельный Родительский проект (должен быть проект" pom"), объявляя два других проекта в качестве своих"модулей". (Дочерние проекты не должны объявлять третий проект в качестве родительского). В результате вы получите новый каталог для нового родительского проекта, где вы также, вероятно, разместите два независимых проекта следующим образом:
parent |- pom.xml |- MyEJBProject | `- pom.xml `- MyWarProject `- pom.xmlРодительский проект получит раздел "Модули", чтобы назвать все дочерние модули. Затем агрегатор будет использовать зависимости в дочерних модулях, чтобы фактически узнать порядок, в котором проекты должны быть построены)
<project> ... <artifactId>myparentproject</artifactId> <groupId>...</groupId> <version>...</version> <packaging>pom</packaging> ... <modules> <module>MyEJBModule</module> <module>MyWarModule</module> </modules> ... </project>таким образом, проекты могут относиться друг к другу, но (как только они будут установлены в локальном репозитории) по-прежнему использоваться независимо в качестве артефактов в других проектах
наконец, если ваши проекты не находятся в связанных каталогах, вы можете попытаться дать их как относительные модули:
filesystem |- mywarproject | `pom.xml |- myejbproject | `pom.xml `- parent `pom.xmlтеперь вы можете просто сделать это (работал в maven 2, просто попробовал):
<!--parent--> <project> <modules> <module>../mywarproject</module> <module>../myejbproject</module> </modules> </project>
Comments