Как использовать 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 на наличие банок, чтобы убедиться, что они установлены правильно.

Другие вопросы по тегам