2016-12-01 8 views
0

У меня есть два проекта. ABC и XYZ. Мне нужно получить классы ABC в XYZДобавление одного проекта maven в другой проект maven, вызывающий Не удалось разрешить ошибки зависимостей

. Для этого я добавил зависимость ABC в XYZ и сделал mvn чистым в затмении. Это сработало!

но когда я МВН чистой установки он показывает

Failed to execute goal on project XYZ: Could not resolve dependencies 
Failure to find ABC-SERVER:ABC:jar:Server in https://repo.maven.apache.org/maven2 was cached in the local repository. 

Вот pom.xml АВС моей POM в:

<groupId>abc-server</groupId> 
    <artifactId>ABCServer</artifactId> 
    <name>ABCServer</name> 
    <version>Server</version> 
    <packaging>war</packaging> 

pom.xml АБВ:

<dependency> 
     <groupId>abc-server</groupId> 
     <artifactId>ABCServer</artifactId> 
     <version>Server</version> 
    </dependency> 
    <plugins> 
     <plugin> 
      <groupId>org.apache.maven.plugins</groupId> 
      <artifactId>maven-compiler-plugin</artifactId> 
      <configuration> 
       <source>${java.version}</source> 
       <target>${java.version}</target> 
       <compilerArgument>-Xlint:all</compilerArgument> 
       <showWarnings>true</showWarnings> 
       <showDeprecation>true</showDeprecation> 

      </configuration> 
     </plugin> 
    </plugins> 

Каков способ сделать это. Мне нужно запустить mvn clean package из командной строки Windows.

Любая помощь будет высоко оценена.

+0

Сделал то же самое. Не повезло – MonsterJava

+0

Да это там в репо. но в войне – MonsterJava

+0

версия, artifactid и groupId одинаковы. но одно дело другое: после того, как mvn clean на ABC делает файл войны. и от B он ищет файл jar? это может быть проблемой? – MonsterJava

ответ

0

Вам необходимо развернуть артефакт ABCServer в удаленном репозитории.

в mvn deploy на вашем хранилище ABCServer должен сделать трюк

+0

Не обязательно. Maven также найдет его, если оба артефакта находятся в реакторе (имеется в виду родительский pom, который включает в себя как ABCServer, так и XYZ в качестве модулей, и вы запускаете maven оттуда), или если он находится в репозитории _local_ (например, вы запускали 'mvn install' на ABCServer). –

0

Проблема заключается в том, что вы упаковки проекта ABC, как война. вам необходимо изменить упаковку для Jar ..
Меняем <packaging>war</packaging> к <packaging>jar</packaging>

1

Посмотрите на сообщение об ошибке:

Неспособность найти ABC-SERVER: ABC: баночку: Сервер

Очевидно, что он никогда не найдет эту зависимость, потому что такой артефакт не существует. Ваш ABC-SERVER упакован как война.

Вы можете заставить его правильно урегулировать зависимость, добавив <type>war</type> к зависимости в XYZ, но если XYZ также является войной, это может быть не то, что вы хотите. Maven будет оверлей Война ABC-SERVER во время войны XYZ (см. https://maven.apache.org/plugins/maven-war-plugin/overlays.html для получения дополнительной информации).

Если вы хотите повторно использовать классы из ABC-SERVER веб-приложение, я полагаю, что правильный способ сделать это, чтобы отделить классы в новую банку артефакта и использовать его в обоих WebApps.