Maven: означает ли управление зависимостями, что мне не нужно отправлять библиотеки (например, log4j)? - PullRequest
0 голосов
/ 09 марта 2012

Я новичок в Maven. Я пытаюсь построить тестовый проект, который включает в себя log4j. Мой класс Java - это просто «привет мир» с импортом для log4j, например:

import org.apache.log4j.Logger;

Мой pom.xml содержит следующий раздел:

<build>
...
    <dependencyManagement>
    <dependencies>
          <dependency>
            <groupId>log4j</groupId>
            <artifactId>log4j</artifactId>
            <version>1.2.12</version>
          </dependency>
      </dependencies>
    </dependencyManagement>
...
</build>

На данный момент я не скачал jar log4j .....

Я бегу:

mvn install.

Я получаю:

...
[INFO] ------------------------------------------------------------------------
[ERROR] BUILD FAILURE
[INFO] ------------------------------------------------------------------------
[INFO] Compilation failure
App.java:[2,23] package org.apache.log4j does not exist
...

Так что я явно не понимаю, как здесь работает Maven ...

Я думал, что смогу отправить (как минимум) файл "pom.xml" и мой код другому пользователю, а Maven должен получить deps?

Ответы [ 2 ]

4 голосов
/ 09 марта 2012

Добро пожаловать в мир Maven; -)

Вы должны удалить теги <dependencyManagement>, это должно работать.

Этот тег используется при использовании модулей Maven (см. Документ Maven )

1 голос
/ 09 марта 2012

Если вы отправляете упакованное приложение, вам все равно нужно предоставить зависимости, обычно путем их объединения в jar с помощью плагина shade или Assembly.

Если вы отправляете библиотеку для использования другими разработчиками, вот тут Maven пригодится. В этом случае вам не нужно указывать зависимости. (Если это так, вы не должны напрямую зависеть от log4j, а использовать SLF4J).

...