скажем, у меня есть мульти Maven проект модуля, с 3-мя модулями:Maven разрешение зависимостей вопрос
Родитель А и дети В и С
C имеет зависимость от В.
Учитывая, что мой .m2 локальный репозиторий не содержит каких-либо из моих артефактов (удаленных их вручную), когда я запускаю сборку на родительском модуле A, первое, что нужно сделать maven, - это загрузить зависимость B от Nexus.
Мне интересно, есть ли способ остановить это, я хочу, чтобы maven сначала построил B, а затем использовал этот артефакт B для создания C. Я не хочу, чтобы он загружал его из nexus, когда B будет построенный так или иначе в этой самой сборке.
Я также не хочу использовать опцию -o (offline). Я просто пытаюсь понять, как работает maven.
Я предполагаю, что это связано с тем, что оба артефакта B имеют одну и ту же версию снимка?
Приветствия
Edit: Это происходит только один раз, в первый раз, когда я запустить сборку. Если я запустил его еще раз, B уже существует в моей директории m2, поэтому он не будет загружен снова. Я просто интересно, почему B загружается самый первый раз
Edit2: Это пример из первых строк мне строит родительский pom.xml с
mvn clean install -DskipTests
[INFO] Scanning for projects...
Downloading: http://xx.xx.xx:xxxxx/nexus/content/groups/public/org/androidannotations/androidannotations/3.3-SNAPSHOT/maven-metadata.xml
Downloaded: http://xx.xx.xx:xxxxx/nexus/content/groups/public/org/androidannotations/androidannotations/3.3-SNAPSHOT/maven-metadata.xml (2 KB at 2.5 KB/sec)
Downloading: http://xx.xx.xx:xxxxx/nexus/content/groups/public/org/androidannotations/androidannotations-parent/3.3-SNAPSHOT/maven-metadata.xml
Downloaded: http://xx.xx.xx:xxxxx/nexus/content/groups/public/org/androidannotations/androidannotations-parent/3.3-SNAPSHOT/maven-metadata.xml (622 B at 1.7 KB/sec)
Downloading: http://xx.xx.xx:xxxxx/nexus/content/groups/public/org/androidannotations/androidannotations-api/3.3-SNAPSHOT/maven-metadata.xml
Downloaded: http://xx.xx.xx:xxxxx/nexus/content/groups/public/org/androidannotations/androidannotations-api/3.3-SNAPSHOT/maven-metadata.xml (2 KB at 4.2 KB/sec)
Downloading: http://xx.xx.xx:xxxxx/nexus/content/groups/public/com/follower/common/0.2-SNAPSHOT/maven-metadata.xml
Downloaded: http://xx.xx.xx:xxxxx/nexus/content/groups/public/com/follower/common/0.2-SNAPSHOT/maven-metadata.xml (972 B at 2.6 KB/sec)
Downloading: http://xx.xx.xx:xxxxx/nexus/content/groups/public/com/follower/common/0.2-SNAPSHOT/common-0.2-20150312.211752-3.jar
Downloading: http://xx.xx.xx:xxxxx/nexus/content/groups/public/com/follower/common/0.2-SNAPSHOT/common-0.2-20150312.211752-3-tests.jar
Downloaded: http://xx.xx.xx:xxxxx/nexus/content/groups/public/com/follower/common/0.2-SNAPSHOT/common-0.2-20150312.211752-3-tests.jar (49 KB at 31.3 KB/sec)
Downloaded: http://xx.xx.xx:xxxxx/nexus/content/groups/public/com/follower/common/0.2-SNAPSHOT/common-0.2-20150312.211752-3.jar (94 KB at 33.9 KB/sec)
Downloading: http://xx.xx.xx:xxxxx/nexus/content/groups/public/com/follower/application/0.2-SNAPSHOT/maven-metadata.xml
Downloaded: http://xx.xx.xx:xxxxx/nexus/content/groups/public/com/follower/application/0.2-SNAPSHOT/maven-metadata.xml (938 B at 3.2 KB/sec)
Downloading: http://xx.xx.xx:xxxxx/nexus/content/groups/public/com/follower/application/0.2-SNAPSHOT/application-0.2-20150312.203520-2.apk
Downloaded: http://xx.xx.xx:xxxxx/nexus/content/groups/public/com/follower/application/0.2-SNAPSHOT/application-0.2-20150312.203520-2.apk (6585 KB at 63.0 KB/sec)
[INFO] ------------------------------------------------------------------------
[INFO] Reactor Build Order:
[INFO]
[INFO] Follower
[INFO] Follower - Common
[INFO] Follower - Application
[INFO] Follower - Application Espresso Tests
[INFO] Follower - Server
[INFO]
[INFO] Using the builder org.apache.maven.lifecycle.internal.builder.singlethreaded.SingleThreadedBuilder with a thread count of 1
[INFO]
[INFO] ------------------------------------------------------------------------
[INFO] Building Follower 0.2-SNAPSHOT
[INFO] ------------------------------------------------------------------------
[INFO]
[INFO] --- maven-clean-plugin:2.5:clean (default-clean) @ follower ---
[INFO]
[INFO] --- maven-install-plugin:2.4:install (default-install) @ follower ---
[INFO] Installing C:\Users\sakis\Desktop\intelliJ projects\follower\pom.xml to C:\Users\sakis\.m2\repository\com\follower\follower\0.2-SNAPSHOT\follower-0.2-SNAPSHOT.pom
[INFO]
[INFO] ------------------------------------------------------------------------
[INFO] Building Follower - Common 0.2-SNAPSHOT
[INFO] ------------------------------------------------------------------------
[INFO]
[INFO] --- maven-clean-plugin:2.5:clean (default-clean) @ common ---
[INFO] Deleting C:\Users\sakis\Desktop\intelliJ projects\follower\common\target
[INFO]
[INFO] --- maven-resources-plugin:2.7:resources (default-resources) @ common ---
[INFO] Using 'UTF-8' encoding to copy filtered resources.
[INFO] skip non existing resourceDirectory C:\Users\sakis\Desktop\intelliJ projects\follower\common\src\main\resources
[INFO]
[INFO] --- maven-compiler-plugin:3.1:compile (default-compile) @ common ---
[INFO] Changes detected - recompiling the module!
[INFO] Compiling 50 source files to C:\Users\sakis\Desktop\intelliJ projects\follower\common\target\classes
Как вы можете видеть, что «общий» модуль jar, "common" test-jar и "application.apk", хотя эти артефакты будут созданы, когда будут созданы общие и прикладные модули.
В pom.xml я следующее (только фрагменты):
родитель pom.xml:
<groupId>com.follower</groupId>
<artifactId>follower</artifactId>
<version>0.2-SNAPSHOT</version>
<packaging>pom</packaging>
<modules>
<module>common</module>
<module>application</module>
<module>espresso</module>
<module>server</module>
</modules>
общего pom.xml: нет зависимостей от других модулей
приложение ПОМ .xml:
<parent>
<groupId>com.follower</groupId>
<artifactId>follower</artifactId>
<version>0.2-SNAPSHOT</version>
</parent>
<artifactId>application</artifactId>
<packaging>apk</packaging>
<dependencies>
<dependency>
<groupId>${project.groupId}</groupId>
<artifactId>common</artifactId>
<type>jar</type>
</dependency>
<dependency>
<groupId>${project.groupId}</groupId>
<artifactId>common</artifactId>
<scope>test</scope>
<type>test-jar</type>
</dependency>
</dependencies>
pom.xml сервер:
<parent>
<groupId>com.follower</groupId>
<artifactId>follower</artifactId>
<version>0.2-SNAPSHOT</version>
</parent>
<artifactId>server</artifactId>
<packaging>jar</packaging>
<dependencies>
<dependency>
<groupId>${project.groupId}</groupId>
<artifactId>common</artifactId>
<type>jar</type>
</dependency>
<dependency>
<groupId>${project.groupId}</groupId>
<artifactId>common</artifactId>
<type>test-jar</type>
</dependency>
</dependencies>
эспрессо pom.xml:
<parent>
<groupId>com.follower</groupId>
<artifactId>follower</artifactId>
<version>0.2-SNAPSHOT</version>
</parent>
<artifactId>espresso</artifactId>
<packaging>apk</packaging>
<dependencies>
<dependency>
<groupId>${project.groupId}</groupId>
<artifactId>application</artifactId>
<scope>provided</scope>
<type>apk</type>
</dependency>
</dependencies>
Вы пытались использовать более старую версию maven? Я использую более старую версию maven (maven 3.2.5), и я никогда не сталкивался с такой проблемой. BTW: это не должно быть потому, что вы используете * такую же * моментальную версию, потому что SNAPSHOT означает «в разработке», и это означает, что maven скорее построит, чем загрузит его. Вы указали политику моментального снимка maven? См. Http://stackoverflow.com/a/3805559/2987273 и http://maven.apache.org/pom.html#Repositories – Alexander
Я использовал maven 3.2.1, я просто попробовал 3.2.5, и я точно вижу То же самое происходит –
Что относительно политики моментальных снимков? – Alexander