Mac Yosemite에서 Java 8과 함께 Maven 3.3.3을 사용하고 있습니다. 다중 모듈 프로젝트가 있습니다.
<modules>
<module>first-module</module>
<module>my-module</module>
…
</modules>
“mvn clean install”을 사용하여 위의 “my-module”과 같은 자식 모듈 중 하나를 빌드 할 때 빌드는 ~ / .m2에 정의한 원격 저장소에서 자식 모듈 아티팩트를 다운로드하려고합니다. /settings.xml 파일. 출력은 다음과 같습니다.
[INFO]
[INFO] ------------------------------------------------------------------------
[INFO] Building my-module 87.0.0-SNAPSHOT
[INFO] ------------------------------------------------------------------------
Downloading: https://my.remoterepository.com/nexus/content/repositories/snapshots/org/mainco/subco/first-module/87.0.0-SNAPSHOT/maven-metadata.xml
Downloading: http://download.java.net/maven/2/org/mainco/subco/first-module/87.0.0-SNAPSHOT/maven-metadata.xml
Downloaded: https://my.remoterepository.com/nexus/content/repositories/snapshots/org/mainco/subco/first-module/87.0.0-SNAPSHOT/maven-metadata.xml (788 B at 0.9 KB/sec)
Downloading: https://my.remoterepository.com/nexus/content/repositories/snapshots/org/mainco/subco/first-module/87.0.0-SNAPSHOT/first-module-87.0.0-20151104.200545-4.pom
원격 저장소에서 다운로드를 시도하기 전에 Maven이 내 로컬 ~ / .m2 / repository를 먼저 확인하도록 강제하는 방법은 무엇입니까? 아래는 ~ / .m2 / settings.xml 파일에 정의 된 원격 저장소가있는 곳입니다.
<profile>
<id>releases</id>
<activation>
<property>
<name>!releases.off</name>
</property>
</activation>
<repositories>
<repository>
<id>releases</id>
<url>https://my.remoterepository.com/nexus/content/repositories/releases/</url>
<releases>
<enabled>true</enabled>
</releases>
<snapshots>
<enabled>false</enabled>
</snapshots>
</repository>
</repositories>
</profile>
<profile>
<id>snapshots</id>
<activation>
<property>
<name>!snapshots.off</name>
</property>
</activation>
<repositories>
<repository>
<id>snapshots</id>
<url>https://my.remoterepository.com/nexus/content/repositories/snapshots/</url>
<releases>
<enabled>false</enabled>
</releases>
<snapshots>
<enabled>true</enabled>
</snapshots>
</repository>
</repositories>
</profile>
편집 : 아티팩트가 없을 때 다운로드가 발생한다는 답변에 대한 응답으로 아래는 파일이 내 저장소에 있음을 증명했지만 Maven이 어쨌든 다운로드를 시도하는 터미널 출력입니다 …
Daves-MacBook-Pro-2:my-module davea$ ls -al ~/.m2/repository/org/mainco/subco/first-module/87.0.0-SNAPSHOT/first-module-87.0.0-SNAPSHOT.jar
-rw-r--r-- 1 davea staff 10171 Nov 5 10:22 /Users/davea/.m2/repository/org/mainco/subco/first-module/87.0.0-SNAPSHOT/first-module-87.0.0-SNAPSHOT.jar
Daves-MacBook-Pro-2:my-module davea$ mvn clean install
[INFO] Scanning for projects...
[WARNING]
[WARNING] Some problems were encountered while building the effective model for org.mainco.subco:my-module:jar:87.0.0-SNAPSHOT
[WARNING] 'build.plugins.plugin.(groupId:artifactId)' must be unique but found duplicate declaration of plugin org.apache.maven.plugins:maven-antrun-plugin @ org.mainco.subco:my-module:[unknown-version], /Users/davea/Documents/sb_workspace/my-module/pom.xml, line 678, column 12
[WARNING]
[WARNING] It is highly recommended to fix these problems because they threaten the stability of your build.
[WARNING]
[WARNING] For this reason, future Maven versions might no longer support building such malformed projects.
[WARNING]
[INFO]
[INFO] ------------------------------------------------------------------------
[INFO] Building my-module 87.0.0-SNAPSHOT
[INFO] ------------------------------------------------------------------------
Downloading: https://my.remoterepository.com/nexus/content/repositories/snapshots/org/mainco/subco/first-module/87.0.0-SNAPSHOT/maven-metadata.xml
Downloading: http://download.java.net/maven/2/org/mainco/subco/first-module/87.0.0-SNAPSHOT/maven-metadata.xml
Downloaded: https://my.remoterepository.com/nexus/content/repositories/snapshots/org/mainco/subco/first-module/87.0.0-SNAPSHOT/maven-metadata.xml (788 B at 0.8 KB/sec)
Downloading: https://my.remoterepository.com/nexus/content/repositories/snapshots/org/mainco/subco/first-module/87.0.0-SNAPSHOT/first-module-87.0.0-20151106.043202-8.pom
Downloaded: https://my.remoterepository.com/nexus/content/repositories/snapshots/org/mainco/subco/first-module/87.0.0-SNAPSHOT/first- module-87.0.0-20151106.043202-8.pom (3 KB at 21.9 KB/sec)
Downloading: http://download.java.net/maven/2/org/mainco/subco/subco/87.0.0-SNAPSHOT/maven-metadata.xml
Downloading: https://my.remoterepository.com/nexus/content/repositories/snapshots/org/mainco/subco/subco/87.0.0-SNAPSHOT/maven-metadata.xml
답변
종속성에 스냅 샷 버전이 있습니다. 스냅 샷의 경우 Maven은 로컬 저장소를 확인하고 로컬 저장소에서 발견 된 아티팩트가 너무 오래된 경우 원격 저장소에서 업데이트 된 항목을 찾으려고 시도합니다. 그것은 아마도 당신이보고있는 것입니다.
이 동작은 updatePolicy
저장소 구성 의 지시문 ( daily
기본적으로 스냅 샷 저장소의 경우)에 의해 제어됩니다 .
답변
사용 mvn --help
하면 옵션 목록을 볼 수 있습니다.
다음과 같은 옵션이 있습니다. -nsu,--no-snapshot-updates Suppress SNAPSHOT updates
따라서 명령 mvn install -nsu
을 사용하면 로컬 저장소로 강제 컴파일 할 수 있습니다.
답변
maven이 로컬 repo 만 사용 하도록 강제 하려면 . 는 당신이 “오프라인”작업 할 수 있도록하고, 네트워크를 계속 꺼져 받는다는 알려줍니다.mvn <goals> -o
-o
답변
제 경우에는 당신과 같은 다중 모듈 프로젝트가있었습니다. 내 프로젝트가 의존하고있는 외부 라이브러리 중 하나의 그룹 ID를 아래와 같이 변경해야했습니다.
에서:
<dependencyManagement>
<dependency>
<groupId>org.thirdparty</groupId>
<artifactId>calculation-api</artifactId>
<version>2.0</version>
<type>jar</type>
<scope>provided</scope>
</dependency>
<dependencyManagement>
에:
<dependencyManagement>
<dependency>
<groupId>org.thirdparty.module</groupId>
<artifactId>calculation-api</artifactId>
<version>2.0</version>
<type>jar</type>
<scope>provided</scope>
</dependency>
<dependencyManagement>
<groupId> 섹션에주의하십시오. pom 파일 에서이 종속성을 정의하는 하위 모듈의 해당 섹션을 수정하는 것을 잊었습니다.
모듈을 로컬에서 사용할 수 있었기 때문에 그것은 나를 매우 미치게 만들었습니다.
답변
아래 단계를 따르십시오.
-
- 보관하려는 jar를 제외하고 로컬에있는 jar 폴더의 모든 내용을 삭제해야합니다.
예를 들어 .repositories, .pom, .sha1, .lastUpdated 등과 같은 파일.
- 보관하려는 jar를 제외하고 로컬에있는 jar 폴더의 모든 내용을 삭제해야합니다.
-
mvn clean install -o
명령 실행
이렇게하면 저장소에 연결하는 대신 로컬 저장소 jar 파일을 사용하는 데 도움이됩니다.
답변
아티팩트가 아직 개발 중이고 아직 업로드되지 않았기 때문에 -o 옵션이 작동하지 않았으며 maven (3.5.x)은 오류에 따라 처음이기 때문에 여전히 원격 저장소에서 다운로드를 시도합니다.
그러나 이것은 나를 위해 수정했습니다 : https://maven.apache.org/general.html#importing-jars
이 수동 설치 후에는 오프라인 옵션도 사용할 필요가 없습니다.
최신 정보
방금 종속성을 다시 작성했고 다시 가져와야했습니다. 일반 파일 mvn clean install
이 충분하지 않았습니다.
답변
위의 모든 답변을 고려하더라도 오류로 인해 maven 오프라인 빌드를 종료하는 문제가 발생할 수 있습니다. 특히 다음과 같은 경고가 발생할 수 있습니다.
[WARNING] The POM for org.apache.maven.plugins:maven-resources-plugin:jar:2.6 is missing, no dependency information available
경고는 즉시 추가 오류가 발생하고 maven이 종료됩니다.
위의 힌트에 따라 생성 된 maven 오프라인 캐시로 오프라인을 구축하는 가장 안전한 방법은 다음 maven 오프라인 매개 변수를 사용하는 것입니다.
mvn -o -llr -Dmaven.repo.local=<path_to_your_offline_cache> ...
특히 -llr 옵션 은 답변 # 4에서 제안한대로 로컬 캐시를 조정할 필요가 없도록합니다.
또한 settings.xml의 localRepository 매개 변수가 다음과 같이 설정되어 있는지 확인하십시오.
<localRepository>${user.home}/.m2/repository</localRepository>