Maven Jetty зависимости загрузки - PullRequest
3 голосов
/ 03 марта 2010

Почему каждый раз, когда я делаю "mvn jetty: run", maven пытается загрузить некоторые зависимости (apache poi и ojdbc jar)? Как я могу отключить это?

[INFO] Scanning for projects..    
[INFO] Searching repository for plugin with prefix: 'jetty'.
[INFO] ------------------------------------------------------------------------
[INFO] Building infolitReport
[INFO]    task-segment: [jetty:run]
[INFO] ------------------------------------------------------------------------
[INFO] Preparing jetty:run
Downloading: http://repository.springsource.com/maven/bundles/release/org/apache/poi/com.springsource.org.apache.poi/3.6/com.springsource.org.apache.poi-3.6.pom
Downloading: http://repository.springsource.com/maven/bundles/external/org/apache/poi/com.springsource.org.apache.poi/3.6/com.springsource.org.apache.poi-3.6.pom
Downloading: http://repository.springsource.com/maven/bundles/milestone/org/apache/poi/com.springsource.org.apache.poi/3.6/com.springsource.org.apache.poi-3.6.pom
Downloading: http://repository.springsource.com/maven/bundles/snapshot/org/apache/poi/com.springsource.org.apache.poi/3.6/com.springsource.org.apache.poi-3.6.pom
Downloading: http://repo1.maven.org/maven2/org/apache/poi/com.springsource.org.apache.poi/3.6/com.springsource.org.apache.poi-3.6.pom
Downloading: http://repository.springsource.com/maven/bundles/release/com/oracle/ojdbc14/10.2.0.2/ojdbc14-10.2.0.2.pom
Downloading: http://repository.springsource.com/maven/bundles/external/com/oracle/ojdbc14/10.2.0.2/ojdbc14-10.2.0.2.pom
Downloading: http://repository.springsource.com/maven/bundles/milestone/com/oracle/ojdbc14/10.2.0.2/ojdbc14-10.2.0.2.pom
Downloading: http://repository.springsource.com/maven/bundles/snapshot/com/oracle/ojdbc14/10.2.0.2/ojdbc14-10.2.0.2.pom
Downloading: http://repo1.maven.org/maven2/com/oracle/ojdbc14/10.2.0.2/ojdbc14-10.2.0.2.pom
[INFO] [aspectj:compile {execution: default}]

Ответы [ 4 ]

4 голосов
/ 03 марта 2010

Как объяснено в главе 3.5.5. Управление зависимостями Maven :

Зависимость в Maven - это не просто файл JAR; это файл POM, который, в свою очередь, может объявлять зависимости от других артефактов. Эти зависимости зависимостей называются транзитивными зависимостями, и они становятся возможными благодаря тому, что репозиторий Maven хранит больше, чем просто байт-код; он хранит метаданные об артефактах.

Итак, когда Maven загружает JAR-зависимость, он загружает не только JAR, но и файл POM. Здесь Maven пытается загрузить их, но они не существуют (существуют только файлы jar). Поэтому maven не будет записывать их в локальный репозиторий и попытается снова в следующий раз.

Здесь есть 4 варианта:

  1. Используйте добрые гражданские артефакты с файлами POM (или попросите ответственного лица решить проблему).
  2. Используйте менеджер репозитория, создавайте и загружайте файлы POM.
  3. Создайте файлы POM в локальном хранилище (например, с помощью install:install-file).
  4. Живи с этим (вздох) и запускай mvn в автономном режиме с опцией -o, чтобы сделать его менее болезненным.
0 голосов
/ 12 мая 2010

Пример ответа Паскаля Тивента

Создайте файлы POM в вашем локальном хранилище (например, используя install:install-file)

mvn install:install-file -DgroupId=org.apache.commons -DartifactId=codec -Dversion=1.3 -Dpackaging=jar -Dfile=lib/commons-codec-1.3.jar -DgeneratePom=true
mvn install:install-file -DgroupId=org.apache.commons -DartifactId=httpclient -Dversion=3.1 -Dpackaging=jar -Dfile=lib/commons-httpclient-3.1.jar -DgeneratePom=true
mvn install:install-file -DgroupId=org.apache.commons -DartifactId=logging -Dversion=1.1 -Dpackaging=jar -Dfile=lib/commons-logging-1.1.jar -DgeneratePom=true
0 голосов
/ 03 марта 2010

Как правило, зависимости будут загружаться при первом запуске команды, но некоторым зависимостям может потребоваться сравнить ее версии и попытаться получить наиболее актуальные для вас при следующем запуске.

Если у вас не всегда есть интернет-соединение или вы просто хотите сократить время сборки, вы можете добавить параметр -o, который означает offline для запуска, например mvn jetty:run -o

0 голосов
/ 03 марта 2010

с чего бы вам это остановить? Вы можете запустить его без загрузки зависимостей? если вы все еще хотите это сделать, проверьте это

http://maven.apache.org/plugins/maven-resources-plugin/examples/include-exclude.html

Посмотрите на теги исключений

...