2012-05-03 5 views
0

У меня есть простой плагин maven, который, в свою очередь, зависит от родительского файла pom. В родительском pom-файле есть десять (10 номеров) сторонних jar-зависимостей, которые были установлены в моем локальном репо, используя следующую команду.Как использовать maven uber pom с зависимостями?

mvn install:install-file -Dfile=foo.jar -DgroupId=com.foo.bar -DartifactId=foo1.jar -Dversion=1.1.0.0 -Dpackaging=jar 

Аналогичным образом я установил все остальные 9 банок в свое местное репо. Это файл uber pom.xml.

<project> 
    <modelVersion>4.0.0</modelVersion> 
    <groupId>com.foo.bar</groupId> 
    <artifactId>maven-uber-pom</artifactId> 
    <packaging>pom</packaging> 
    <version>1.1.0.0</version> 
    <name>maven-uber-pom</name> 
    <url>http://maven.apache.org</url> 
    <dependencies> 
    <dependency> 
     <groupId>com.foo.bar</groupId> 
     <artifactId>foo1.jar</artifactId> 
     <version>1.0.0.0</version> 
    </dependency> 
    <dependency> 
     <groupId>com.foo.bar</groupId> 
     <artifactId>foo2.jar</artifactId> 
     <version>1.0.0.0</version> 
    </dependency> 
    <dependency> 
     <groupId>com.foo.bar</groupId> 
     <artifactId>foo3.jar</artifactId> 
     <version>1.0.0.0</version> 
    </dependency> 
    <dependency> 
     <groupId>com.foo.bar</groupId> 
     <artifactId>foo4.jar</artifactId> 
     <version>1.0.0.0</version> 
    </dependency> 
    : 
    : 
    </dependencies> 

Я пытаюсь ссылаться на этот убер POM в файле pom.xml моего плагина следующим:

<project> 
    <parent> 
    <groupId>com.foo.bar</groupId> 
    <artifactId>maven-uber-pom</artifactId> 
    <version>1.1.0.0</version> 
    </parent> 
    <modelVersion>4.0.0</modelVersion> 
    <groupId>com.foo.bar</groupId> 
    <artifactId>foo-maven-plugin</artifactId> 
    <packaging>maven-plugin</packaging> 
    <version>1.1.0.0</version> 
    <name>foo bar plugin</name> 
    <url>http://maven.apache.org</url> 
</project> 

После этого я попробуйте установить мой плагин, используя файл pom.xml по

mvn install     <command> 

Maven пытается загрузить зависимости сторонних артефактов от центрального репо http://repo1.maven.org/maven2 и впоследствии не удается. Поскольку нет артефакта, какие такие координаты можно найти в центральном репо.

Я также пытался использовать uber-pom в качестве зависимостей плагина, так как я был в отчаянии. Есть идеи?

+0

Если я правильно посмотрел, вы установили foo.jar, но не ссылаетесь на этот артефакт в родительском pom только foo1.jar, foo2.jar и т. Д. Кроме того, вы установили mavenn-uber-pom через mvn install в локальном хранилище? Я рекомендую использовать диспетчер репозитория, в частности, если у вас есть сторонняя банка, которая может быть недоступна в maven central. – khmarbaise

+0

Спасибо, что указали мне это. Это была типография, которая отредактировала это. Я фактически установил все банки с установкой maven install: install-file в свое местное репо. – JourneyMan

+0

Был ли запущен «mvn install» на родительском проекте POM? Если нет, то он не будет найден. –

ответ

0

По умолчанию Maven сначала выполнит поиск зависимостей в ваших локальных репозиториях. Если он не найден, он будет искать в ваших глобальных/пользовательских репозиториях (по умолчанию устанавливается только центральный репозиторий). Вы запустили mvn install на uberpom? И если да, проверьте правильность пути в локальном репо.

Я не уверен, что вы просто забыли адаптировать это к вашему примеру, но определение «uberpom» имеет com.foo.bar как groupId, а использование на вашем плагине имеет com.oracle.weblogic.test. Это, вероятно, опечатка. Я также предполагаю, что все ваши зависимые сторонники были установлены правильно (проверьте их pom).

И только ради этого, проверьте, задано ли в вашем settings.xml значение <localRepository>. Обычно вам не нужно устанавливать это, но делайте снимок.

Я не специалист, но надеюсь, что это поможет!

+0

Я поставил мой localrepository в настраиваемом место. Я редактировал groupIds для соответствия. Это была опечатка :-(мой плохой – JourneyMan

0

ГруппаId в родительском POM и groupId в ссылке на родительский POM не совпадают. Файл groupId, artifactId и версия должны точно соответствовать Maven для поиска родителя.

+0

Спасибо, что указали это. Я сопоставил их и все еще нахожу, что баки просматриваются в центральном хранилище. – JourneyMan

0

попробуйте «mvn install -o» для принудительного автономного режима. может указать на проблему.

Когда вы запустили команду install-file, вы указали сгенерировать pom и сгенерировать контрольные суммы?

вручную проверьте ваш maven repo для фляг, чтобы убедиться, что они установлены должным образом.

Смежные вопросы