Как добавить проект в зависимость от другого проекта?

Существует два независимых проекта (myWarProject и MyEjbProject). Поэтому, когда я создаю myWarProject, мне нужно установить MyEjbProject в локальный репозиторий, поэтому я могу определить в myWarProject как зависимость и успешно упаковать myWarProject.

Есть ли способ справиться с этим без установки MyEjbProject отдельно, а также без указания в качестве родительских модулей.

Я знаю, что это может быть достигнуто с помощью сборки ant, но задайтесь вопросом, есть ли способ управлять через 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, либо его создания, либо его установки, как вы уже, кажется, делаете.

EDIT: Если они, однако, зависят друг от друга, вы всегда можете создать отдельный родительский проект (должен быть проектом "pom" ), объявив два других проекта в качестве своих "модулей". (Дочерние проекты не должны были объявлять третий проект в качестве своего родителя). Как следствие, вы получите новый каталог для нового родительского проекта, где вы также, вероятно, поместили бы два независимых проекта следующим образом:

parent
|- pom.xml
|- MyEJBProject
|   `- pom.xml
`- MyWarProject
    `- pom.xml

Родительский проект получит раздел "modules", чтобы назвать все дочерние модули. Затем агрегатор будет использовать зависимости в дочерних модулях для фактического определения порядка, в котором должны быть созданы проекты)

<project>
   ...
   <artifactId>myparentproject</artifactId>
   <groupId>...</groupId>
   <version>...</version>

   <packaging>pom</packaging>
   ...
   <modules>
     <module>MyEJBModule</module>
     <module>MyWarModule</module>
   </modules>
   ...
</project>

Таким образом, проекты могут относиться друг к другу, но (как только они установлены в локальном репозитории) по-прежнему используются независимо как артефакты в других проектах

EDIT2:

Наконец, если ваши проекты не связаны со связанными каталогами, вы можете попытаться предоставить их в качестве относительных модулей:

filesystem
 |- mywarproject
 |   `pom.xml
 |- myejbproject
 |   `pom.xml
 `- parent
     `pom.xml

теперь вы могли бы просто сделать это (работал в maven 2, просто попробовал):

<!--parent-->
<project>
  <modules>
    <module>../mywarproject</module>
    <module>../myejbproject</module>
  </modules>
</project>