Как использовать Maven Uber Pom с зависимостями?
У меня есть простой плагин Maven, который, в свою очередь, зависит от родительского файла POM. В родительском файле pom есть десять (10) зависимостей jar сторонних производителей, которые были установлены в моем локальном репозитории с помощью следующей команды.
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>
Я пытаюсь сослаться на этот uber 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 как зависимость от плагинов, так как был в отчаянии. Есть идеи?
3 ответа
GroupId в родительском POM и groupId в ссылке на родительский POM не совпадают. GroupId, artifactId и version должны точно совпадать, чтобы Maven мог найти родителя.
По умолчанию Maven сначала будет искать зависимости в ваших локальных репозиториях. Если он не находит, он будет искать в ваших глобальных / пользовательских репозиториях (по умолчанию установлен только центральный репозиторий). Ты бежал mvn install
на уберпом? И если это так, проверьте правильность пути в вашем локальном репо.
Я не уверен, что вы просто забыли адаптировать это к вашему примеру, но определение "uberpom" имеет com.foo.bar
как groupId и использование на вашем плагине com.oracle.weblogic.test
, Это, вероятно, опечатка, хотя. Я также предполагаю, что все ваши сторонние зависимости были установлены правильно (проверьте их pom).
И просто ради этого, проверьте, если <localRepository>
устанавливается в вашем файле settings.xml. Обычно вам не нужно устанавливать это, но попробуйте.
Я не эксперт, но надеюсь, что это поможет!
Попробуйте "mvn install -o", чтобы включить автономный режим. может указывать на проблему.
Когда вы запустили команду install-file, указали ли вы "Генерировать pom" и "Создать контрольные суммы"?
вручную проверьте репозиторий Maven на наличие банок, чтобы убедиться, что они установлены правильно.