오프라인 개발을 위해 Maven을 설정하려면 어떻게 해야 합니까?
maven이 사용하기 위해서는 인터넷에 접속할 필요가 있습니까?컴파일, 클리닝, 패키징 등을 위한 내부 메이븐 플러그인이 필요합니까?
을 실행할 수 .mvn -o install
물론 로컬 저장소에서 사용할 수 없는 아티팩트는 실패합니다.Maven은 분산 저장소를 기반으로 하지 않지만, 보다 매끄럽게 작업을 수행할 수 있습니다.많은 상점들이 중앙 저장소와 점진적으로 동기화되는 내부 미러를 사용하고 있는 것도 이 때문입니다.
「」는,mvn dependency:go-offline
를 사용하여 오프라인 작업을 시작하기 전에 모든 종속성을 로컬로 설치할 수 있습니다.
LAN에 인터넷 접속이 가능한 PC가 있는 경우 로컬 Maven 저장소를 설치해야 합니다.
아티팩토리 오픈소스를 추천합니다.이것이 델이 사용하는 것입니다.설정은 매우 간단합니다.
아티팩토리는 빌드 도구(Maven, Ant, Ivy, Gradle 등)와 외부 세계 간의 프록시 역할을 합니다.
원격 아티팩트를 캐시하여 여러 번 다운로드할 필요가 없습니다.
내부 아티팩트에 대한 원치 않는(경우에 따라서는 보안에 민감한) 외부 요청을 차단하고 아티팩트를 배포하는 방법 및 위치와 사용자를 제어합니다.
한 후에는 아티팩토리를 만 하면 .settings.xml
개발 기계에서 다음을 수행합니다.
<?xml version="1.0" encoding="UTF-8"?>
<settings xsi:schemaLocation="http://maven.apache.org/SETTINGS/1.0.0 http://maven.apache.org/xsd/settings-1.0.0.xsd" xmlns="http://maven.apache.org/SETTINGS/1.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<mirrors>
<mirror>
<mirrorOf>*</mirrorOf>
<name>repo</name>
<url>http://maven.yourorganization.com:8081/artifactory/repo</url>
<id>repo</id>
</mirror>
</mirrors>
<profiles>
<profile>
<repositories>
<repository>
<snapshots>
<enabled>false</enabled>
</snapshots>
<id>central</id>
<name>libs-release</name>
<url>http://maven.yourorganization.com:8081/artifactory/libs-release</url>
</repository>
<repository>
<snapshots />
<id>snapshots</id>
<name>libs-snapshot</name>
<url>http://maven.yourorganization.com:8081/artifactory/libs-snapshot</url>
</repository>
</repositories>
<pluginRepositories>
<pluginRepository>
<snapshots>
<enabled>false</enabled>
</snapshots>
<id>central</id>
<name>plugins-release</name>
<url>http://maven.yourorganization.com:8081/artifactory/plugins-release</url>
</pluginRepository>
<pluginRepository>
<snapshots />
<id>snapshots</id>
<name>plugins-snapshot</name>
<url>http://maven.yourorganization.com:8081/artifactory/plugins-snapshot</url>
</pluginRepository>
</pluginRepositories>
<id>artifactory</id>
</profile>
</profiles>
<activeProfiles>
<activeProfile>artifactory</activeProfile>
</activeProfiles>
</settings>
개발 기계에서 인터넷 접속에 문제가 발생하여 일부 아티팩트가 손상된 파일을 다운로드하거나 전혀 다운로드하지 않았기 때문에 이 솔루션을 사용했습니다.그 이후로 문제가 없었어요.
여기에는 다음 두 가지 옵션이 있습니다.
1) settings.xml을 변경하여 첫 번째 태그에 추가합니다.
<localRepository>C:/Users/admin/.m2/repository</localRepository>
2) offline 명령어에는 -o 태그를 사용합니다.
mvn -o clean install -DskipTests=true
mvn -o jetty:run
Maven은 로컬 저장소에 종속성이 필요합니다.가장 쉬운 방법은 인터넷에 접속하는 것입니다(또는 여기에 기재되어 있는 다른 솔루션을 사용하는 경우).
따라서 일시적으로 인터넷에 접속할 수 있다고 가정하면 의존관계: go-offline 목표를 가진 maven-dependency-plugin을 사용하여 오프라인으로 전환할 준비를 할 수 있습니다.이렇게 하면 프로젝트의 모든 의존관계가 로컬 저장소에 다운로드됩니다(의존관계/플러그인을 변경하면 새로운 인터넷/중앙 저장소 액세스가 필요합니다).
오프라인으로 전환하기 전에 모든 항목이 오프라인 작업 시 필요한 로컬 리포에 있는지 확인해야 합니다.작업하려는 프로젝트에 대해 "mvn dependency: go-offline"을 실행하면 이를 달성하기 위한 노력이 줄어듭니다.
그러나 의존관계: go-offline은 "bare build" 플러그인만 다운로드하기 때문에 일반적으로 전부는 아닙니다(go-offline/resolve-plugins는 모든 플러그인 종속성을 해결하지 않습니다).따라서 도입/테스트/사이트 플러그인(및 기타)과 그 의존관계를 레포에 다운로드하는 방법을 찾아야 합니다.
또한 종속성: go-offline은 POM의 아티팩트 자체를 다운로드하지 않으므로 종속성: 필요에 따라 복사해야 합니다.
때때로 - MaDa가 썼듯이 - 오프라인 상태에서는 무엇이 필요한지 알 수 없기 때문에 "충분한" 보고서를 작성하는 것은 거의 불가능합니다.
어쨌든 올바르게 기입된 레포는, Maven의 settings.xml 에 「<offline >true</offline>」를 추가하는 것만으로 오프라인이 됩니다.
오프라인 상태에서는 리포 작성에 사용한 Maven 프로파일(ID)을 변경하지 마십시오.Maven은 다운로드된 아티팩트를 프로파일 ID에 바인딩된 "ID"로 메타데이터에서 인식합니다.
도 ★★★★★★★★★★★★★★★★.
dependency:go-offline
및 의존관계.POM 파일 및 기타 종속성을 암시적으로 언급합니다.
회피책은 로컬저장소의 위치를 지정하는 것입니다.settings.xml
<localRepository>...</localRepository>
""를 mvn
-Dmaven.repo.local=...
파라미터를 지정합니다.빌드 후할 수 (Maven 모드로 ).mvn -o ...
를 참조해 주세요.
IntelliJ 를 사용하고 있는 경우는, 프리퍼런스 -> 빌드, 실행, 전개 -> 빌드 툴 -> 메이븐 으로 이동하여 오프라인으로 작업하기 체크/체크박스를 해제할 수 있습니다.
이거 괜찮으세요?
http://jojovedder.blogspot.com/2009/04/running-maven-offline-using-local.html
플러그인 저장소에 추가하고 저장소가 있는 모든 위치에 URL을 지정하는 것을 잊지 마십시오.
<repositories>
<repository>
<id>local</id>
<url>file://D:\mavenrepo</url>
</repository>
</repositories>
<pluginRepositories>
<pluginRepository>
<id>local</id>
<url>file://D:\mavenrepo</url>
</pluginRepository>
</pluginRepositories>
그렇지 않은 경우 시스템에서 Apache 등의 로컬 서버를 실행해야 할 수 있습니다.
(출처 : jfrog.com )
또는
Sonatype Nexus http://www.sonatype.org/nexus/ 또는 JFrog Artactory https://www.jfrog.com/artifactory/과 같은 Maven 저장소 서버를 사용하십시오.
한 개발자가 프로젝트를 구축한 후 다음 개발자가 구축하거나 Jenkins CI가 인터넷에 접속할 필요가 없습니다.
또한 Maven 저장소 서버는 Maven Central(또는 더 필요한 공용 저장소)에 액세스하도록 구성된 프록시를 가질 수 있으며 원격 저장소에 아티팩트 목록을 가질 수 있습니다.
내 경험에 따르면 -o 옵션은 제대로 작동하지 않으며 오프라인 목표는 완전한 오프라인 빌드를 허용하기에 충분하지 않습니다.
제가 검증할 수 있는 솔루션에는--legacy-local-repository
대신 maven 옵션-o
(7) 배포 저장소 대신 로컬 저장소 사용
게다가, 나는 모든 것을 복사해야만 했다.maven-metadata-maven2_central.xml
로컬 리포트의 파일maven-metadata.xml
maven이 예상한 폼입니다.
여기서 찾은 솔루션을 참조하십시오.
의 단점을 수정하기 위한 새로운 플러그인이 등장했습니다.mvn dependency:go-offline
:
https://github.com/qaware/go-offline-maven-plugin
폼에 넣고 달려라mvn -T1C de.qaware.maven:go-offline-maven-plugin:resolve-dependencies
. 모든 동적 종속성을 설정한 후에는 버전을 업데이트할 때까지 maven이 다시 다운로드를 시도하지 않습니다.
질문에 직접 답변: 인터넷 연결이 아니라 저장소에 대한 액세스, LAN 또는 로컬 디스크(여기에 게시한 다른 사용자의 힌트를 사용)가 필요합니다.
프로젝트가 성숙 단계에 있지 않은 경우, 즉 POM을 자주 변경할 경우 오프라인 모드는 매우 실용적이지 않으며, 저장소도 자주 업데이트해야 합니다.필요한 모든 것을 갖춘 저장소의 복사본을 얻을 수 없다면 어떻게 알 수 있을까요?일반적으로 저장소를 처음부터 시작하면 개발 중에(다른 저장소에 연결된 컴퓨터에서) 점진적으로 복제됩니다.repo1.maven.org 공용 저장소의 복사본은 수백 기가바이트이므로, 무차별적인 공격도 권장하지 않습니다.
오프라인으로 작업하기 전에 먼저 실행하세요.mvn dependency:go-offline
<offline> false </offline>
<localRepository>${user.home}/.m2/repository</localRepository>
로.
<offline> true <offline>
<localRepository>${user.home}/.m2/repository</localRepository>
오프라인 태그를 false에서 true로 변경합니다.
repo on-line에서 다운로드 합니다.
언급URL : https://stackoverflow.com/questions/7233328/how-do-i-configure-maven-for-offline-development
'programing' 카테고리의 다른 글
numpy 배열에서 가장 가까운 값 찾기 (0) | 2022.09.24 |
---|---|
이름 값 컬렉션으로의 URI 문자열 해석 (0) | 2022.09.24 |
태그 열기/닫기 및 퍼포먼스 (0) | 2022.09.24 |
루프나 조건문을 사용하지 않고1 ~ 1000 으로 인쇄하는 C 코드는 어떻게 동작합니까? (0) | 2022.09.24 |
C/C++에서 메모리 부족 상황에 적절하게 대처하는 방법은 무엇입니까? (0) | 2022.09.24 |