Как зависеть от этого проекта maven

Мои проекты состоят из трех подпроектов, и мой родительский pom выглядит так:

<groupId>com.bwort.core</groupId>
<artifactId>bwort</artifactId>
<packaging>pom</packaging>
<version>0.0.1-SNAPSHOT</version>

<name>bwort</name>

<modules>
  <module>proj1</module>
  <module>proj2</module>
  <module>proj3</module>             
</modules>

Теперь мой проект должен зависеть от этого проекта ниже, который состоит из трех подпроектов, с родительским pom. В частности, у него уже есть родитель, как показано ниже: https://github.com/cmusphinx/sphinx4/blob/master/pom.xml

  <parent>
    <groupId>org.sonatype.oss</groupId>
    <artifactId>oss-parent</artifactId>
    <version>7</version>
  </parent>

  <groupId>edu.cmu.sphinx</groupId>
  <artifactId>sphinx4-parent</artifactId>
  <version>1.0-SNAPSHOT</version>
  <packaging>pom</packaging>

Мой вопрос: как я могу объявить зависимость в моем родительском файле pom? Я могу добавить еще один модуль в свой родительский pom:

<module>sphinx4</module>

Но поскольку эта библиотека уже определила своего родителя «oss-parent», то как я могу сделать свой родитель pom своим родителем?

Как мой проект должен зависеть от этого проекта? Спасибо.

ОТРЕДАКТИРОВАНО: Мой pom.xml

 <project >
  <modelVersion>4.0.0</modelVersion>

   <parent>
     <groupId>com.bwort.core</groupId>
     <artifactId>bwort</artifactId>
     <version>0.0.1-SNAPSHOT</version>
   </parent>

    <artifactId>wikipedia</artifactId>
    <packaging>jar</packaging>


  <repositories>
       <repository>
           <id>snapshots-repo</id>
           <url>https://oss.sonatype.org/content/repositories/snapshots</url>
           <releases><enabled>false</enabled></releases>
          <snapshots><enabled>true</enabled></snapshots>
       </repository>
    </repositories>

  <dependencies>

    <dependency>
        <groupId>edu.cmu.sphinx</groupId>
        <artifactId>sphinx4-core</artifactId>
        <version>1.0-SNAPSHOT</version>
    </dependency>
    <dependency>
        <groupId>edu.cmu.sphinx</groupId>
        <artifactId>sphinx4-data</artifactId>
        <version>1.0-SNAPSHOT</version>
    </dependency>

 </dependencies>   

</project>

person user697911    schedule 26.08.2015    source источник
comment
Скажите, пожалуйста, может ли это вам помочь --› stackoverflow.com/questions/13487075/   -  person Iker Aguayo    schedule 26.08.2015
comment
Это определенно полезно. Но после URL-адреса репозитория и зависимости я получил этот отсутствующий артефакт edu.cmu.sphinx:sphinx4-data:jar:1.0-SNAPSHOT. Я использую свой собственный репозиторий Nexus.   -  person user697911    schedule 26.08.2015
comment
Пожалуйста, проверьте, присутствует ли эта банка на вашем нексусе. Если его там нет, укажите его репозиторий в вашем pom.xml, как указано в приведенной выше ссылке, предоставленной Икером Агуайо.   -  person asg    schedule 26.08.2015
comment
Я протестировал его, и он работает, добавляя репозиторий и зависимость к pom.xml. Поэтому, пожалуйста, проверьте свой pom.xml (и папку settings.xml im .m2). См. ответ.   -  person Iker Aguayo    schedule 26.08.2015
comment
Я отредактировал свой пост и добавил свой pom.xml. Странно то, что если я использую свой собственный файл settings.xml (мой собственный нексус), он сообщает об ошибке отсутствия артефакта; если я удалю settings.xml в maven, он не сообщит об ошибке. Однако в обоих случаях я получил один и тот же файл ~/.m2/repository/org/sonatype/oss/oss-parent/7/oss-parent-7.pom без фактического файла jar. Любая идея причины?   -  person user697911    schedule 26.08.2015


Ответы (2)


Если ваш pom.xml имеет что-то вроде следующего, он должен работать:

<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
    <modelVersion>4.0.0</modelVersion>
    <groupId>com.mycompany.app</groupId>
    <artifactId>my-app</artifactId>
    <packaging>jar</packaging>
    <version>1.0-SNAPSHOT</version>
    <name>my-app</name>
    <url>http://maven.apache.org</url>
    <repositories>
        <repository>
            <id>snapshots-repo</id>
            <url>https://oss.sonatype.org/content/repositories/snapshots</url>
            <releases>
                <enabled>false</enabled>
            </releases>
            <snapshots>
                <enabled>true</enabled>
            </snapshots>
        </repository>
    </repositories>
    <dependencies>
        <dependency>
            <groupId>junit</groupId>
            <artifactId>junit</artifactId>
            <version>3.8.1</version>
            <scope>test</scope>
        </dependency>
        <dependency>
            <groupId>edu.cmu.sphinx</groupId>
            <artifactId>sphinx4-core</artifactId>
            <version>1.0-SNAPSHOT</version>
        </dependency>
        <dependency>
            <groupId>edu.cmu.sphinx</groupId>
            <artifactId>sphinx4-data</artifactId>
            <version>1.0-SNAPSHOT</version>
        </dependency>
    </dependencies>
</project>
person Iker Aguayo    schedule 26.08.2015
comment
Да, отредактировал, похоже на твое. POM не сообщает об ошибке, но когда я проверяю ~/.m2/repository/org/sonatype/oss/oss-parent/7/, он показывает только файл oss-parent-7.pom без jar. Без баночки. почему не сообщает об ошибке? - person user697911; 26.08.2015
comment
Вы сделали, mvn package?? Потому что я сделал, и зависимости загружены - person Iker Aguayo; 26.08.2015
comment
Я вижу, что они загружены из сообщения на экране. sphinx4-core-1.0-20150630.174404-9.jar" rel="nofollow noreferrer">oss.sonatype.org/content/repositories/snapshots/edu/cmu/sphinx/ (1184 КБ при 614,7 КБ/с) Загружено: oss.sonatype.org/content/repositories/snapshots/edu/cmu/sphinx/ (36900 КБ при 3456,9 КБ/сек), но я не вижу его в ~/.m2 /repository/org/sonatype/oss/oss-parent/7/, только три файла oss-parent-7.pom oss-parent-7.pom.sha1 _remote.repositories . Ошибки тоже не видно. - person user697911; 26.08.2015
comment
Зависимости находятся в ~/.m2/repository/edu/cmu/sphinx и теперь добавляются в ваши проекты как зависимости. Проверьте, можете ли вы использовать API этих зависимостей в своих проектах, если да, ваша проблема решена. - person Iker Aguayo; 26.08.2015
comment
Да, это там! Но почему, когда я использую свои собственные настройки нексуса, он не может загрузиться? В моем pom.xml это ‹packaging›jar‹/packaging›. Это не должно иметь значения. Верно? - person user697911; 26.08.2015
comment
Не знаю, может ошибка в конфиге нексуса. См. это, stackoverflow .com/questions/14333577/ Но это должен быть другой вопрос :) - person Iker Aguayo; 26.08.2015

Нет, вы не добавляете модули в свой pom, которые ссылаются на модули других людей.

При выполнении mvn install и/или mvn deploy артефакты, определенные в файлах pom.xml, будут скопированы в локальный или удаленный репозиторий. Так что, надеюсь, проект, от которого вы хотите зависеть, доступен в Maven Central.

я бы предложил добавить раздел управления зависимостями в ваш родительский файл pom.xml:

<properties>
  <sphinx.version>1.0-SNAPSHOT</sphinx>
</properties>
<dependencyManagement>
  <dependencies>
    <dependency>
      <groupId>edu.cmu.sphinx</groupId>
      <artifactId>sphinx4-module1</artifactId>
      <version>${sphinx.version}</version>
    </dependency>
    <dependency>
      <groupId>edu.cmu.sphinx</groupId>
      <artifactId>sphinx4-module2</artifactId>
      <version>${sphinx.version}</version>
    </dependency>
  </dependencies>
</dependencyManagement>

в pom.xml одного из ваших собственных модулей добавьте нужную зависимость в раздел зависимостей: обратите внимание, что версия теперь определена в родительском.

  <dependencies>
    <dependency>
      <groupId>edu.cmu.sphinx</groupId>
      <artifactId>sphinx4-module2</artifactId>
    </dependency>
  </dependencies>

Я бы рекомендовал не использовать -SNAPSHOT версии других приложений для людей - это часто вызывает сбои сборки в зависимости от того, когда был создан моментальный снимок и когда maven его извлекает.

Если sphinx не находится в репозитории, вам сначала нужно выполнить mvn install локально

И я бы порекомендовал учебники maven:

они тоже многое объясняют :)

person wemu    schedule 26.08.2015