2016-08-19 10 views
0

maven을 사용하여 프로젝트를 빌드하는 동안 상위 프로젝트 버전을 업데이트 한 후 javadoc을 생성하는 문제가 발생합니다. 당신이 볼 수 있듯이Maven이 site.xml의 영어 로케일 누락을 검색합니다.

2016-08-18 16:06:44.559 [INFO] <<< maven-javadoc-plugin:2.10.3:aggregate < generate-sources @ org.eclipse.scout.rt <<< 
2016-08-18 16:06:44.560 [DEBUG] building maven31 dependency graph for org.eclipse.scout.rt:org.eclipse.scout.rt:pom:6.0.0-SNAPSHOT with Maven31DependencyGraphBuilder 
2016-08-18 16:06:44.560 [DEBUG] Dependency collection stats: {ConflictMarker.analyzeTime=0, ConflictMarker.markTime=0, ConflictMarker.nodeCount=1, ConflictIdSorter.graphTime=0, ConflictIdSorter.topsortTime=0, ConflictIdSorter.conflictIdCount=0, ConflictIdSorter.conflictIdCycleCount=0, ConflictResolver.totalTime=0, ConflictResolver.conflictItemCount=0, DefaultDependencyCollector.collectTime=0, DefaultDependencyCollector.transformTime=0} 
2016-08-18 16:06:44.561 [DEBUG] org.eclipse.scout.rt:org.eclipse.scout.rt:pom:6.0.0-SNAPSHOT 
2016-08-18 16:06:44.636 [DEBUG] canGenerateReport = true for project MavenProject: org.eclipse.scout.rt:org.eclipse.scout.rt:6.0.0-SNAPSHOT @ /home/<REDACTED>/workspace/org.eclipse.scout.rt.branch-6.0_nightly-sitedocs/org.eclipse.scout.rt/pom.xml 
2016-08-18 16:06:44.662 [DEBUG] Computing decoration model of org.eclipse.scout.rt:org.eclipse.scout.rt:pom:6.0.0-SNAPSHOT for locale en 
2016-08-18 16:06:44.662 [DEBUG] No site descriptor found for org.eclipse.scout.rt:org.eclipse.scout.rt:pom:6.0.0-SNAPSHOT 
2016-08-18 16:06:44.663 [DEBUG] Looking for site descriptor of level 1 parent project: org.eclipse.scout:maven_rt_plugin_config-master:pom:2.0.7 
2016-08-18 16:06:44.665 [DEBUG] Using transporter WagonTransporter with priority -1.0 for <REDACTED> 
2016-08-18 16:06:44.666 [DEBUG] Using connector BasicRepositoryConnector with priority 0.0 for <REDACTED> 
2016-08-18 16:06:44.666 [INFO] Downloading: <REDACTED>/org/eclipse/scout/maven_rt_plugin_config-master/2.0.7/maven_rt_plugin_config-master-2.0.7-site_en.xml 
2016-08-18 16:06:45.289 [DEBUG] Writing tracking file /home/<REDACTED>/workspace/org.eclipse.scout.rt.branch-6.0_nightly-sitedocs/.repository/org/eclipse/scout/maven_rt_plugin_config-master/2.0.7/maven_rt_plugin_config-master-2.0.7-site_en.xml.lastUpdated 
2016-08-18 16:06:45.597 [ERROR] Failed to execute goal org.apache.maven.plugins:maven-site-plugin:3.5.1:site (default-cli) on project org.eclipse.scout.rt: SiteToolException: The site descriptor cannot be resolved from the repository: ArtifactResolutionException: Unable to locate site descriptor: Could not transfer artifact org.eclipse.scout:maven_rt_plugin_config-master:xml:site_en:2.0.7 from/to AAA.libs.release (<REDACTED>): Access denied to: <REDACTED>/org/eclipse/scout/maven_rt_plugin_config-master/2.0.7/maven_rt_plugin_config-master-2.0.7-site_en.xml , ReasonPhrase:Forbidden. 
2016-08-18 16:06:45.598 [ERROR] org.eclipse.scout:maven_rt_plugin_config-master:xml:2.0.7 
2016-08-18 16:06:45.598 [ERROR] 
2016-08-18 16:06:45.598 [ERROR] from the specified remote repositories: 
2016-08-18 16:06:45.598 [ERROR] AAA.libs.release (<REDACTED>, releases=true, snapshots=false), 
2016-08-18 16:06:45.599 [ERROR] AAA.libs.snapshots (<REDACTED>, releases=false, snapshots=true), 
2016-08-18 16:06:45.599 [ERROR] eclipse.release (https://repo.eclipse.org/content/groups/releases/, releases=true, snapshots=false), 
2016-08-18 16:06:45.599 [ERROR] eclipse.snapshot (https://repo.eclipse.org/content/groups/snapshots/, releases=true, snapshots=true), 
2016-08-18 16:06:45.599 [ERROR] remote-repos (<REDACTED>, releases=true, snapshots=false) 

, 그것은 실제로 존재하지 않는 .XML, 엉 maven_rt_plugin_config 마스터-2.0.7-의 site_ 를 다운로드하려고합니다. 그러나 거기 엔 _en 접미사가없는 xml이 존재합니다 ...

내가 볼 수있는 한 로케일을 지정하지 않았으며 사이트 또는 javadoc 생성과 관련된 상위 프로젝트에는 변경 사항이없는 것으로 보입니다.

왜 Maven이 기본 로케일로 폴백하지 않습니까?

답변

0

이 문제는 Google 저장소 (JFrog Artifactory)의 동작이 원인 : 요청 된 저장소가 여러 실제 저장소를 집계하는 virtual repository입니다.

사용자가 액세스 할 수있는 리포지토리에서 요청 된 이슈를 찾을 수 없으면 사용자가 이 아닌 다른 사용자가 액세스 할 수있는 경우 40338 (금지됨)으로 응답합니다.에 액세스 할 수 있습니다. 메이븐 (Maven)은 같은 저장소에서 대체 파일을 찾지 않는 것 같습니다.

JFrog Artifactory가 동작을 변경하기 위해 feature request이 있지만 (작성 시점에) 아무도 그것에 대해 작업하지 않습니다.

우리의 해결책은 settings.xml을 저장소를 직접 가리 키도록 변경하는 것이 었습니다. 그런 다음 Maven은 영어 로켈 버전 (site_en.xml)에 대해 404 (Not Found)를 수신하고 올바르게 기본 site.xml로 폴백합니다. 다른 Maven 플러그인도 403과 함께 표시 될 때이 문제를 나타냅니다.

1

이것은 메이븐이 부모 프로젝트에서 site.xml 또는 site_en.xml을 검색하는 이유를 파악하려는 다른 사용자에게 도움이 될 수 있으며,

SpringBoot를 사용할 때 비슷한 문제가 발생했습니다. mvn clean site과 함께 중앙 (https://repo.maven.apache.org/maven2)에서 spring-boot-starter-parent:xml:site_en:1.4.0.RELEASE를 전송하려는 실패 :

repo.maven.apache.org:443 실패했습니다 repo.maven.apache.org/xxxx : 연결 시간 초과 : 연결

프로젝트가 기업 리포지토리를 사용하도록 구성되었지만 Maven Central Direct를 사용할 때 발생하지 않은 경우에 발생했습니다. 회사 저장소가 자리를 잡으면 요청이 보안 된 요청으로 프록시 처리됩니다. 중앙에 대한 보안 요청이 "시간 초과"로 실패하여 빌드가 실패했습니다. 요청이 보안되지 않은 경우 중앙에서 '찾을 수 없음'이 반환되고 기본 설정을 사용하여 계속 유지됩니다. 따라서이 경우 404가 좋을 것입니다 (원하는대로 기본값으로 계속). 다른 오류 코드는 좋지 않습니다 (빌드 실패).

  • 로컬 저장소 (해킹) 허용에 설명 된대로 같은 기업의 repo 서버
  • 구성 변경 (아마 실제 수정로 파일을 설치합니다

    이 주위에 몇 가지 방법이 있습니다 답)

  • 구성 받는다는에 설정 프록시 settings.xml 파일 여기

settings.xml 프록시 설정의 예입니다 :

<proxy> 
    <active>true</active> 
    <protocol>http</protocol> 
    <host>my.corporate.proxy</host> 
    <port>myPort</port> 
    <nonProxyHosts>*.my.corporate.domain|*.my.subsidiary.domain</nonProxyHosts> 
</proxy>